【发布时间】:2017-01-27 11:10:16
【问题描述】:
假设我有一个带有如下用户表的 MySQL 数据库:
|ID| Name| email |...
|1 | John| john@doe.com|...
我将有一个 php 页面,用户将在复选框的帮助下在两个独立兴趣领域的不同选项之间进行选择。对于这个例子,让我们说:最喜欢的水果和汽车。
水果:苹果、柠檬、梨、香蕉。 汽车:法拉利、梅赛德斯、沃尔沃、宝马。
现在我有两种可能:
1.) 为与每个用户关联的每个水果和每辆车创建一个列,如下所示:
|ID| Name| email |apple | lemon | pear | banana | ferrari | mercedes | volvo | BMW |
|1 | John| john@doe.com| 1 | 1 | 0 | 1 | 0 | 1 | 0 | 1 |
2) 创建两个新表,名为:fruits 和 cars。
|ID| Name |
| 1| Apple |
| 2| Lemon |
| 3| Pear |
| 4| Banana|
|ID| Name |
| 1| Ferrari |
| 2| Mercedes |
| 3| Volvo |
| 4| BMW |
然后创建一个名为 user_fruit 的关系表和另一个名为 user_cars 的关系表。例如:
|ID_user| ID_fruit |
| 1 | 1 |
| 1 | 2 |
| 1 | 4 |
(注意水果 id 3,梨没有出现,因为它没有被选中 --> 0)
|ID_user| ID_car |
| 1 | 2 |
| 1 | 4 |
问题: 我不知道哪种方法更好?第一个很容易,但是一旦选项增加,表格将有很多 tinyint 列。 第二个在开始时对所有关系都比较困难,但更容易维护,除非用户取消选中一个选项,否则我觉得通过 php 删除行不太舒服,特别是在基于索引的表上。
不知道有没有人遇到过类似的任务,能给我一些建议。
我真的不需要任何代码示例,因为我知道如何开发这两个选项,这更像是我正在寻找的一种性能和维护方法。
干杯!
【问题讨论】:
标签: php mysql performance checkbox