Moh*_*mad 9 mysql database foreign-keys
是否有正式指导或阈值来指示何时最佳做法是在MySQL数据库中使用外键?
假设您为电影创建了一个表.一种方法是将生产者和导演数据集成到同一个表中.(movieID,movieName,directorName,producerName).
但是,假设大多数导演和制片人都参与过许多电影.是否最好为生产者和导演创建另外两个表,并在电影表中使用外键?
什么时候成为最佳做法?许多董事和制片人多次出现在专栏中?或者最好在一开始就采用外键方法?虽然使用外键似乎更有效,但它也增加了数据库的复杂性.
那么复杂性和规范化之间的权衡何时变得值得呢?我不确定是否存在阈值或一定数量的单元重复,这使得使用外键更加明智.
我正在考虑一个将由数百个用户同时使用的数据库.
非常感谢!
Igo*_*any 12
这方面有一些官方指导方针.它们被称为普通形式,将数据库放入其中的做法称为规范化:http://en.wikipedia.org/wiki/Database_normalization
如果你在大学读一个db课程,他们可能会教你3nf或bcnf.我总是发现这些方法有点笨拙,但我有足够的数据库设计经验,我发现这些问题基本上是直观的...
在您的示例中,您肯定希望使用外键约束.这种多对一的关系最好用这种方式表达出来.它会使选择电影的速度变慢,因为你必须在'人物'表和'电影'表上加入 - 可能有很多连接,这取决于电影表有多少'人'字段.
但优点是你可以轻松地管理人们自己.如果要更改人名的拼写,则不必扫描整个表,在每个字段中查找该人.您可以避免在数据库中多次使用同一个人,但拼写略有不同.您可以设置删除某人时要采取的操作.您可以轻松计算一个人有多少不同的角色.
不要忘记,如果你想使用外键,你必须在mysql中创建你的表innodb.