我是网络开发的新手,可以真正使用一些建议。提前谢谢大家!
我有一个表格,我要求用户在1到10之间评估他们在几个方面(心理,身体,乐趣)的经验。总共大约有10个区域。使用areaID和userID制作区域表和交叉表是否值得?在这种情况下,创建一个包含11列的表(每个区域一个加上一个用户ID)会不会更容易?
据我所知,带有areaID键的'areas'表是最强大的,并允许我稍后添加更多区域,但我真的不认为自己这样做了。另外,正如我只希望< 1000个用户那样,在MySQL数据库中添加另一个列会有很多工作吗?
最后,我实际上应该使用多对多结构的截止点是什么?后来在表格中,我有用户从1到4对30个字段进行评分。我应该在那里使用两个表系统吗?
再次感谢!
答案 0 :(得分:4)
最好使用单独的子表。连接的SQL开销很小,您可以完全灵活地选择允许的条目数/几个,而无需更改数据库结构。
现在可能只有10个区域,但是PHB在发布前一个小时就改变了对“基岩”的看法而臭名昭着。
答案 1 :(得分:4)
我总是使用正确的交集表建立多对多关系,因为你永远不会预测将来会带来什么。
答案 2 :(得分:2)
假设您要计算每个用户的区域数。如果你使用一个包含11列的表,你会怎么做?
使用交集表实现此功能。你会很高兴的。
答案 3 :(得分:1)
两者都有道理,但我会选择多对多方法,然后您可以在区域表中指定每个区域的名称(并且可以添加一些注释,特定区域的含义为1或10,等等。 。)
答案 4 :(得分:0)
对此没有错误的答案,但请考虑一下:你确定这个数字会保持固定在10吗?
就个人而言,我仍然会使用多对多的关系。这是更优雅的解决方案,在我看来,更好。但是,做好工作往往是浪费时间。