【问题标题】:Linking two attributes in a table链接表中的两个属性
【发布时间】:2014-01-29 16:34:11
【问题描述】:

我正在为 SQL 类的介绍创建一个模拟驱动程序注册器,但我不确定如何确保表的两个属性始终链接。该表表示 Person 实体和 Vehicle 实体之间的关系——这种关系称为 Owns。

我已将其设置为许多人可以拥有任意数量的车辆,并且可以将任意数量的人视为该车辆的所有者/驾驶员。但是,当交通摄像头签发罚单时,罚单应该签发给主要所有者/驾驶员,我将其作为关系属性。

我的Owns表SQL代码如下

CREATE TABLE Owns (
Owned_By INT,
VIN INT,
Primary INT,
FOREIGN KEY(Owned_BY) REFERENCES Person(SIN),
FOREIGN KEY(VIN) REFERENCES Vehicle(VIN),
FOREIGN KEY(Primary) REFERENCES Person(SIN));

我想让 VIN 只有一个 Primary 但可以有多个 Owned_By。我可以使用 CHECK 完成此操作还是需要使用其他东西?

【问题讨论】:

    标签: sql


    【解决方案1】:

    2 个表:

    1. 车辆(VIN int,PRIMART int,...其他车辆独特的道具) FOREIGN KEY(Primary) REFERENCES Person(SIN));
    2. 拥有(OWNED_BY int,VIN int)外键(VIN)参考 车辆(VIN)、外键(Owned_BY) REFERENCES 人(SIN);

    【讨论】:

    • 根据我的 ER 图,车辆可以存在于数据库中,但不属于任何人。那么将 Primary 作为车辆的属性是不正确的吗?
    • 它应该允许空值,所以空值意味着没有主要所有者
    猜你喜欢
    • 2019-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-15
    • 1970-01-01
    • 1970-01-01
    • 2016-05-08
    相关资源
    最近更新 更多