在MySQL数据库中,我有两个表:用户和项目
这个想法是,用户可以根据需要创建任意数量的项目,每个项目都有唯一的ID,并且它们将被连接,以便我可以显示特定用户的所有项目。
在性能和清晰度方面哪种方法更好?是否真的存在差异?
答案 0 :(得分:2)
让我澄清为什么方法2优越......
方法1意味着您要在同一数据库字段中打包几个不同的信息。这违反了atomicity的原则,因此违反了1NF的原则。结果:
实际上,方法2是表示这种“一对多”关系的标准方式。
答案 1 :(得分:1)
只要某个项目没有多个所有者,它就是one to many关系。这通常会减少到您提到的第二种方法,例如。 user
表格中有created_by
或Items
列。
答案 2 :(得分:1)
第二种方法更好,因为它在one-to-many
到USER
表上定义了ITEM
关系。
您可以在ITEM
列的USERID
表格上创建外键,该列引用USERID
表格中的USER
列。
您可以轻松加入这两个表,索引也可用于该查询。
答案 3 :(得分:1)
如果用户可以拥有一个或多个项目,但每个项目仅由一个用户拥有,那么您将拥有经典的一对多关系。
第一个选项,将相关ID列表填入单个字段,这是完全错误的做法。
为每个表分配唯一标识符字段(称为主键)。并在Item表中添加一个额外的字段,一个外键,即拥有该项目的User的id。
喜欢这个ERD(entity-relationship diagram)......
您有一些关于relational database设计和normalization的了解。