![]() |
1
12
有一些官方的指导方针。它们被称为正常形式,将数据库放入其中的做法被称为规范化: http://en.wikipedia.org/wiki/Database_normalization 如果你在大学上DB课程,他们可能会教你3NF或BCNF。我一直觉得这些方法有点笨手笨脚,但我在数据库设计方面有足够的经验,我发现这些问题在这一点上基本上是直观的… 在您的示例中,您肯定希望使用外键约束。多对一的关系最好用这种方式表达。这会使选择电影的速度变慢,因为您必须在“人物”表和“电影”表上进行连接-根据电影表中有多少“人物”字段,可能需要进行许多连接。 但好处是你可以很容易地管理人们自己。如果要更改人名的拼写,则不必扫描整个表,在每个字段中查找该人。你可以避免同一个人多次出现在数据库中,但在拼写上有细微差别。如果某人被删除,您可以设置要采取的操作。你可以很容易地计算一个人有多少不同的角色。 别忘了,如果你想使用外键,你必须在mysql中使你的表成为innodb。 |
![]() |
2
4
这太不规范了。你在重复数据。
另外,假设一个人可以在一部电影中担任制片人,在另一部电影中担任导演。一个人也可以被认为是导演,制片人,作家和演员在一部电影!
您将希望从一开始就掌握外键、关系(尤其是一对多和多对多)和正常形式。它们很快就会变成第二天性。 |
![]() |
Davtho1983 · 在Django中查看ForiegnKey数据 7 年前 |
![]() |
N_M · 主键和外键约束在配置单元中如何工作? 7 年前 |
![]() |
Melolailo · 将约束与外键一起使用 7 年前 |
![]() |
Alfred Balle · Postgresql,对唯一约束的引用 7 年前 |
![]() |
yodabar Arkana · 更新|删除外键时的PgSQL默认操作 7 年前 |
![]() |
Seba · 如何检查外键以限制软删除? 7 年前 |
![]() |
dryhay · MySQL“多对多”关系错误 7 年前 |