微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

数据库设计:什么时候不使用外键?

如何解决数据库设计:什么时候不使用外键?

我不确定何时使用外键以及何时插入一个“未引用”的值(考虑到所需的磁盘空间、性能等更好)的经验法则是什么。

假设我有三个表:

表 1:itemGroup(用于用项目填充下拉菜单

ID  title   
1   Active/Inactive Options
2   Car Brands
3   ratings
4   Languages

表 2:item(itemID 将是下拉列表中的实际值并用作外键)

itemID  listID  title   
1000    1       active
1001    1       inactive
1002    2       Porsche
1003    2       Audi
1004    3       1-Star rating
1005    3       2-Star rating 
1006    4       en 
1007    4       de

表 3:示例表

ID  car rating active language

所以我的问题是我是否应该使用 itemID 在表 3 中插入​​外键,或者使用 1/0 表示活动/非活动并使用 1,2,3,4,5 更有意义作为评分的整数?猜猜汽车,它很自我解释说外键更好,但在某些情况下很难决定,因为我的“项目”表可能非常大,因此 itemID 的数字比它可能指的实际“值”多在一个大型数据库中,这在某些时候会在空间上产生差异,我猜也是性能明智的,因为我需要使用外键进行连接。

更新: 我添加了“语言”字段,因为也许在这里问题得到了更好的说明。因此,如果我要存储语言外键(例如“1006”):

  • 我需要在我的 exampleTable 中一遍又一遍地存储一个 4 位数的 int,而不仅仅是一个 2 个字符的 varchar
  • 我无法执行像“SELECT * from exampleTable WHERE language=en”这样的简单查询

为什么在这里使用外键会更好?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。