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

问题描述

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

假设我有三个表:

表 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 (将#修改为@)