外键使用/额外表

时间:2018-02-23 09:09:43

标签: database database-design foreign-keys entity-relationship

我最近开始研究数据库设计。我曾与Oracle合作过,但现在我想在将它们实现到数据库之前先创建逻辑或概念设计关系。学习你可以说的基础知识。

我想为汽车创建一个数据库。我有一些表,但我的关系有问题,何时使用外键/额外表。

我创建了一个汽车表,并添加了属性。现在我很清楚在引用制造商表的汽车表中使用制造商外键。 但是,例如我想展示汽车的类型(SUV,轿车等)。此外,我想展示汽车是什么类(正常,上层等)。由于我只会区分最多5种车型,我还需要添加外键吗?类情也是如此。 我听说总是使用外键,因为它保护了数据库的完整性,但在大学,我的老师总是告诉我们尽可能使用最小数量的表,因此把我放在一个尴尬的地方。

我该怎么办?

我非常感谢此事的澄清。

2 个答案:

答案 0 :(得分:0)

即使在玩具系统中,也应该使用外键和附加表;当数据库变大或开始设计真实数据库时,学习这种习惯将很好地为你服务。

我想象的是关于"最少数量的表" (应该是"最小数字")是为了防止你创建包含两个值的表格(例如"是"和" no"," present"和#34;不存在"),这也是一个学习的好习惯。它也可以引用查询,你想要加入不必要的表;这可能导致查询检索重复的行。

答案 1 :(得分:0)

汽车类型和汽车类是所谓的枚举域的示例。域是属性可以采用的值集。在Oracle术语中,它是可以放在给定列中的一组值。与其他一些SQL方言不同,Oracle没有CREATE DOMAIN语句。您可能可以使用CREATE TYPE,但我无法告诉您如何使用。

对您而言,最简单的解决方案可能是按照您的建议创建一个查找表。这里不要过分担心增加的复杂性。

管理100个表比100,000行代码更容易。这是来自dba世界的旧口号,但它有一些道理。