是否可以在一个表中引用主键作为超过2个表的外键约束?

时间:2014-07-07 00:04:21

标签: sql database phpmyadmin foreign-keys primary-key

我目前在机场上使用sql通过phpmyadmin服务器制作数据库后端系统。标准并不是完美的,但查询背后的一个想法是想象客户或航班派遣官员可能正在查看表格。我想知道是否可以在两个或更多表中引用主键作为外键。在下面的示例中,我想将模型编号作为底部2表中的外键引用。我确保类型和字符数相同。

    CREATE TABLE Aircraft_Model
    (Model_Number varchar (12) NOT NULL,
    seat_capacity int (3),
    CONSTRAINT pk7 primary key (Model_Number));

    CREATE TABLE Licence_type
    (Rank varchar (25) NOT NULL,
    Model_Number varchar (12),
    CONSTRAINT pk9 primary key (Rank));

    CREATE TABLE Aircraft
    (Aircraft_ID varchar (4) NOT NULL, 
    Model_Number varchar(12),
    airport_base text(13),
    CONSTRAINT pk1 PRIMARY KEY (Aircraft_ID));

这可能吗?我只希望数据库能够执行大约12-15个简单查询。

添加外键的语法是这样的吗?

ALTER TABLE Aircraft
ADD CONSTRAINT fk1 FOREIGN KEY(Model_Number)
REFERENCES Aircraft_Model

从单独的表(如Licence_type)引用的相同外键是否需要添加单独的约束,还是可以从具有相同fk1编号的相同约束中添加?

1 个答案:

答案 0 :(得分:0)

  

我想知道是否可以引用主键作为   2个或更多表中的外键。

如果您的意思是,"两个或多个表是否可以使用引用相同列的外键?"然后,是的,您可以这样做。这似乎就是你的意思,但它不是 大多数人在谈论"跨越2个或更多表的外键时的意思"

声明两个不同的,单独的约束。

ALTER TABLE Aircraft
ADD CONSTRAINT fk1 FOREIGN KEY(Model_Number)
REFERENCES Aircraft_Model (Model_Number);

ALTER TABLE License_Type
ADD CONSTRAINT fk2 FOREIGN KEY(Model_Number)
REFERENCES Aircraft_Model (Model_Number);