我有一个表单,用户必须使用复选框选择大量设施。我正在考虑将每个复选框保存为 ENUM('0','1') 数据类型是 facilities_table,然后在我的 View 中显示它们,如下所示:
<?php
$jacuzzi = $facilities['jacuzzi'] == 1?"jacuzzi available":"jacuzzi not available";
?>
我想知道这是不是最好的方法...
提前致谢。
最佳答案
我通常使用具有以下定义的 TINYINT(1) 列:
`MyBooleanColumn` TINYINT(1) UNSIGNED DEFAULT 0
我不知道这是否有任何性能优势,但它允许您执行 2 个以上的值,它可能高达 255,因为 TINYINT 是一个字节。但我想一个 ENUM 字段需要不止一个字节。
就是说,如果您尝试将多个设施
与多个用户
链接起来,那么可能需要这样的事情吗?
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',
)
通过上表,您可以加入并获得用户想要的设施列表。您甚至不需要存储 bool 值,因为该表中的一行具有将其链接到用户的设施 ID,这意味着他们选择了它。
关于php - 选择哪种数据类型以及如何在脚本上实现它(多对多关系),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5436670/