Я обычно использую столбец TINYINT (1) со следующим определением:
`MyBooleanColumn` TINYINT(1) UNSIGNED DEFAULT 0
Я не знаю, есть ли какое-либо преимущество в производительности для этого, но это позволило бы вам сделать более двух значений, это может быть до 255, поскольку TINYINT является байтом. Но я представляю, что для поля ENUM требуется более одного байта.
Тем не менее, если вы пытаетесь связать несколько facilities
с несколькими users
, возможно, что-то вроде этого в порядке?
CREATE TABLE `facilities_users` (
`facility_id` BIGINT() UNSIGNED NOT NULL COMMENT 'foreign key -> facilities.id',
`user_id` BIGINT() UNSIGNED NOT NULL COMMENT 'foreign key -> users.id',
)
С помощью приведенной выше таблицы вы можете просто присоединиться и получить список услуг, которые пользователь хотел бы иметь. Вам даже не нужно хранить логическое значение, потому что факт наличия строки в этой таблице с идентификатором объекта, связывающим ее с пользователем, означает, что он выбрал ее.