对于每个广告,我允许用户最多选择5个标签。现在,在我的数据库中,我喜欢它......
Posting_id TagID
5 1
5 2
5 3
6 5
6 1
但我在想是否应该像...那样......
Posting_id TagID
5 1 2 3
6 5 1
然后,第一个选项更容易插入和检索数据。但如果我有100个帖子,每个帖子有3个标签,那就是300行...所以还有更多的行
第二个选项需要使用explode()impode()等,但它更清晰。
我应该选择哪个选项?为什么?谢谢!
编辑:第一种方式更好!
答案 0 :(得分:3)
使用第一个选项,因为第二个选项使得难以有效地为TagID
列编制索引。如果您想查询您的数据以查找存储在TagID
列中的特定数值(并且我打赌你会这样做),那么您将从第二个选项中获得较差的性能。
答案 1 :(得分:2)
第一种方式。行很便宜,mysqsl可以处理数百万行的表。另外,以第一种方式执行此操作会将ID保持为整数,这可以使将来使用表更加容易(例如,在进行连接和引用外键时)。
答案 2 :(得分:0)
第一个。您将意识到,当您必须“使用这些标签计算所有主题但不计算其他标题”时。
答案 3 :(得分:0)
第二种方法打破了数据库规范化的第一条规则。