php - 选择哪种数据类型以及如何在脚本上实现它(多对多关系)

标签 php database database-design

我有一个表单,用户必须使用复选框选择大量设施。我正在考虑将每个复选框保存为 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/

相关文章:

javascript - 从 php 文件运行命令行程序

python - 无法使用 MySQL 数据写入文件

php - 带标签的图像数据库设计注意事项

mysql - 电影目录数据库设计

mysql - 对列进行限制的建模数据库

php - 带有php和mysql的预订系统

php - 使用表格在 php 中显示图像

php - Laravel:使用 foreach 时获取 session ID 奇怪地截断

mysql - 使用mysql从时间戳中减去日期时间

sql - 不同类型的SQL之间的区别?