创建了一个具有主键列和两个外键列的联接表,未提取数据

时间:2019-01-10 22:59:53

标签: sql jointable

我创建了一个名为Expirations的新表,该表具有自己的唯一ID,并且身份递增,因为它是主键。我还希望该表从其他两个表中提取数据,因此我为InsuranceId和LicenseId创建了一个列,使这两个列的外键都将它们连接到各自表(保险和许可证)中的数据(aka ID) 。 知道为什么我的数据没有自动填入我的过期表吗?我相信所有这些列的创建都是“一对多”。不确定这是否正确,因为我希望到期表列出所有保险ID和许可证ID。

有人知道我在做什么错吗?

2 个答案:

答案 0 :(得分:0)

外键并不表示表格会自动填充。

假设您有一个人员表,一个公司表和一个company_person表,以显示哪个人在哪个公司工作。现在,您插入三个公司和四个人。这并不意味着company_person表填充了3 x 4 = 12个记录(即,所有人员都在所有公司工作)。那是没有道理的。

外键仅保证您不能在相关表中插入无效数据(即不存在的人或不存在的公司)。您必须自己插入记录。

答案 1 :(得分:0)

基本上,到期表就像事实表一样,您希望从暗表中加载数据,这些表是Insurancetable(InsuranceId作为主键)和Licencetable(Licenceid作为PK)。

但是,如果您没有InsuranceId和licenseId的任何组合,那么您如何知道哪个Insuranceid属于哪个LicenseId。

如果到期表为空,则需要首先在保险表和许可表之间进行交叉联接,这是笛卡尔结果,但是您不想这样做,因为在现实世界中这没有意义。

希望我的解释有所帮助。