Sql 可以让主键引用其他表中的另一个主键吗?如果是,在什么情况下会使用这种方法?

Sql 可以让主键引用其他表中的另一个主键吗?如果是,在什么情况下会使用这种方法?,sql,primary-key,Sql,Primary Key,创建一个主键(customer_id)与另一个表中的另一个PK匹配的表,并尝试引用该主键 CREATE TABLE customer_leads( customer_id SERIAL PRIMARY KEY, first_name VARCHAR(25) NOT NULL, last_name VARCHAR(25) NOT NULL, email VARCHAR(25) NOT NULL UNIQUE,

创建一个主键(customer_id)与另一个表中的另一个PK匹配的表,并尝试引用该主键

    CREATE TABLE customer_leads(
        customer_id SERIAL PRIMARY KEY, 
        first_name VARCHAR(25) NOT NULL,
        last_name VARCHAR(25) NOT NULL,
        email VARCHAR(25) NOT NULL UNIQUE,
        signup_date TIMESTAMP NOT NULL,
        duration TIME NOT NULL,
        PRIMARY KEY(customer_id) REFERENCES customer(customer_id)
        )

我认为这没有道理。这是有道理的:

CREATE TABLE customer_leads(
    customer_lead_id SERIAL PRIMARY KEY, 
    . . . 
);

CREATE TABLE customers (
    customer_id int PRIMARY KEY, 
    . . . 
    FOREIGN KEY(customer_id) REFERENCES customer_leads(customer_lead_id)
);
这个公式说,每个客户都是以客户为导向的。“客户id”是在潜在客户级别分配的,其中一些最终转化为客户

这是有道理的。外键引用来自
客户
表。所有客户都有有效的潜在客户,但并非所有潜在客户都是(必要的)有效客户


你的结构很麻烦。基本上,
customer\u id
是通过序列列在客户线索中分配的。然后,这应该是对另一个表的主键的引用。但是这个值是如何计算的呢?这个结构对我来说没有意义。

我认为这没有意义。这是有道理的:

CREATE TABLE customer_leads(
    customer_lead_id SERIAL PRIMARY KEY, 
    . . . 
);

CREATE TABLE customers (
    customer_id int PRIMARY KEY, 
    . . . 
    FOREIGN KEY(customer_id) REFERENCES customer_leads(customer_lead_id)
);
这个公式说,每个客户都是以客户为导向的。“客户id”是在潜在客户级别分配的,其中一些最终转化为客户

这是有道理的。外键引用来自
客户
表。所有客户都有有效的潜在客户,但并非所有潜在客户都是(必要的)有效客户


你的结构很麻烦。基本上,
customer\u id
是通过序列列在客户线索中分配的。然后,这应该是对另一个表的主键的引用。但是这个值是如何计算的呢?这种结构对我来说毫无意义。

我明白了。我不认为我对引用的实际用途有一个清晰的理解。为了让您的PK引用另一个PK,您将其设置为外键,就像您对“客户”表所做的那样?另外,您为什么没有客户id序列号?谢谢你的帮助。@Mir。通常,这些键是不同的。但问题是主键也可以是外键,我明白了。我不认为我对引用的实际用途有一个清晰的理解。为了让您的PK引用另一个PK,您将其设置为外键,就像您对“客户”表所做的那样?另外,您为什么没有客户id序列号?谢谢你的帮助。@Mir。通常,这些键是不同的。但问题是主键也可以是外键。这是常见问题解答。在考虑发帖之前,请始终用谷歌搜索你的错误消息或你的问题/问题/目标的许多清晰、简洁和准确的措辞,有/没有你的特定字符串/名称和网站:stackoverflow.com和标签,并阅读许多答案。如果你发布一个问题,用一句话作为标题。请参见文本上方的投票箭头(&S)。PS PK是唯一的而不是null&FK引用唯一的。当其中一种情况发生时,如果它尚未由另一个声明暗示,则声明它。这是一个常见问题。在考虑发帖之前,请始终用谷歌搜索你的错误消息或你的问题/问题/目标的许多清晰、简洁和准确的措辞,有/没有你的特定字符串/名称和网站:stackoverflow.com和标签,并阅读许多答案。如果你发布一个问题,用一句话作为标题。请参见文本上方的投票箭头(&S)。PS PK是唯一的而不是null&FK引用唯一的。当其中一种情况发生时,如果它尚未由另一个声明暗示,则声明它。