引用表和引用表

abr*_*ski 12 mysql sql database-design foreign-keys

我试图了解人际关系,自然会出现问题.

MySQL Workbench截图

引用表的含义是什么,引用的表是什么意思?在上面的例子中哪一个应该被引用,哪一个引用?让我们说,为了论证,该settlements表是一个子表(没有国家,结算不可能存在).这个子表是应该引用还是引用?

我不想为这样一个小问题开一个新问题:那个Mandatory复选框是什么意思?这是否意味着需要或country_id需要定居点表?或者别的什么?

abr*_*ski 11

在PostgreSQL文档中找到了一个非常好的解释.

假设您已经多次使用过产品表:

CREATE TABLE products (
    product_no integer PRIMARY KEY,
    name text,
    price numeric
);
Run Code Online (Sandbox Code Playgroud)

我们还假设您有一个存储这些产品订单的表.我们希望确保订单表仅包含实际存在的产品订单.所以我们在orders表中定义了一个引用products表的外键约束:

CREATE TABLE orders (
    order_id integer PRIMARY KEY,
    product_no integer REFERENCES products (product_no),
    quantity integer
);
Run Code Online (Sandbox Code Playgroud)

现在,无法使用product_no条目创建未出现在products表中的订单.

我们说在这种情况下,orders表是引用表,products表是引用表.同样,有引用和引用列.


one*_*hen 8

引用的表是“父”表。

引用表是“子”表。

线索在 SQL DDL 中,例如

ALTER TABLE Settlements ADD
   FOREIGN KEY (country_id)
   REFERENCES Countries (id);
Run Code Online (Sandbox Code Playgroud)

结算引用国家,意味着引用国家。