我正在努力理解人际关系,自然会出现问题。
引用表的含义是什么,引用的表是什么意思?在上面的例子中哪一个应该被引用,哪一个引用?
让我们说,为了论证,settlements
表是一个子表(没有国家,结算不可能存在)。该子表是应该引用还是引用?
我不想为这样一个小问题打开一个新问题:
那个Mandatory
复选框是什么意思?这是否意味着需要结算表或需要country_id
?或者别的什么?
答案 0 :(得分:10)
在PostgreSQL文档中找到了一个非常好的解释。
假设您已经多次使用过产品表:
CREATE TABLE products (
product_no integer PRIMARY KEY,
name text,
price numeric
);
我们还假设您有一个存储这些产品订单的表格。我们希望确保订单表仅包含实际存在的产品订单。因此,我们在订单表中定义了一个引用products表的外键约束:
CREATE TABLE orders (
order_id integer PRIMARY KEY,
product_no integer REFERENCES products (product_no),
quantity integer
);
现在无法使用product_no条目创建未出现在products表中的订单。
我们说在这种情况下,订单表是引用表,而products表是引用的表。同样,还有引用和引用的列。
答案 1 :(得分:4)
引用的表是“父”表。
引用表是'子'表。
线索在SQL DDL中,例如
ALTER TABLE Settlements ADD
FOREIGN KEY (country_id)
REFERENCES Countries (id);
结算参考国家,暗示引用国家。
答案 2 :(得分:2)
settlements
表格(包含country_id字段)正在引用到 countries
表格(ID字段)
我认为强制性复选框与关系无关。它只是字段上的非空约束。但是你应该参考MySQL Workbench的用户手册。
答案 3 :(得分:1)
强制复选框,如果它似乎对生成的SQL没有影响,则对图形有一些影响。如果不加以检查,你可以在相关的关系线末端看到小圆(对于关系符号乌鸦的脚)。
这意味着外键可以为null,也就是说。不是强制性的。
答案 4 :(得分:0)
一个国家/地区可以有多个和解,因此国家/地区表是引用的表,结算表是引用表。我不知道强制性领域。