【发布时间】:2012-08-30 14:16:01
【问题描述】:
考虑这种情况:汽车是从销售人员处购买的。一名销售人员在陈列室(并且仅在一个陈列室)工作。陈列室隶属于制造商,仅销售该制造商制造的汽车。同时,汽车是特定的Model,而Model是由制造商制造的。
限制 R:汽车模型的制造商必须与汽车销售员的陈列室的附属制造商是同一制造商。
该图显示了明显的外键关系。
----> Manufacturer <----
| |
| |
Showroom |
^ |
| Model
| ^
Salesperson |
^ |
| |
--------- Car ----------
您如何执行限制 R?您可以添加外键关系Car --> Manufacturer。然而,汽车制造商可以通过围绕“钻石”以一种或另一种方式连接表格来建立,所以这样做肯定不会被规范化吗?但我不知道如何强制执行约束。
【问题讨论】:
-
这可能只是一个例子——但在这里我不会限制这一点,因为陈列室与制造商相关联,那么在那里出售的所有汽车都必须由该制造商制造......进一步- 同一销售人员可能在多个陈列室工作。
-
^^ 陈列室跟厂家有什么关系?
-
我已经澄清了这个问题。陈列室只销售其所属制造商生产的汽车。
-
我会在触发逻辑中强制执行此操作。
-
好吧,我只能重复我的请求,请您进一步解释。哪条信息是多余的?如果我有一辆汽车,那么我需要知道它是哪种型号,并且我需要知道是谁卖的。如果我有一个模型,我需要知道是谁制造的(即使还没有该模型的任何汽车,我也需要知道这一点)。如果我有销售人员,我需要知道他们在哪里工作,并且我需要知道工作场所隶属于哪个制造商(即使它还没有销售任何汽车)。
标签: database database-design foreign-keys constraints normalization