Відповіді:
Особисто я би використав BOOLEAN
для булевого значення. Але майте на увазі застереження, яке в MySQL BOOLEAN
є лише синонімом TINYINT(1)
[src] .
Це, звичайно, означає, що ви можете мати значення, відмінні від 0 або 1, якщо ви не будете обережні. Щоб цього уникнути, ви можете використовувати псевдоніми TRUE
та FALSE
під час вставки та оновлення даних, оскільки вони відображають відповідно до 1 та 0.
Для повного завершення до 5.0.3 BIT
було також синонімом TINYINT(1)
.
Якщо я правильно це зрозумів, BOOLEAN завжди використовує 1 байт на стовпчик, але BIT (n) буде використовувати як мінімум кілька байтів, необхідних для утримання заданої кількості бітів.
Таким чином, BIT може заощадити деякий простір, але з BOOLEAN легше працювати, якщо вам потрібно запитати їх за допомогою SQL.
Якби у мене був набір прапорів, які були зрозумілі програмою і зберігалися в одному полі в додатку, я б хотів би використовувати BIT (n). Однак якби у мене були стовпці, які потрібно було запитувати з SQL, я б використовував BOOLEAN.
Прикладом може бути додаток, який використовував прапори, щоб записувати, на яких тижнях має відбуватися подія, причому трохи на тиждень - 1, якщо подія працює в даний тиждень. Якщо дані будуть спрощені для запиту в базі даних, вони були б "нормалізовані" у двох таблицях, але якщо дані потрібно зберігати лише в базі даних, то найкраще зберігати їх у формі, якою користується програма в.