外键引用

Foreign Key Reference

我在 class 中指出 FlightData table 中的 2 个外键是 Depart_CodeAriv_Code 没有任何 table 在给定的关系模式中引用它们作为主键。

在 class 中,有人告诉我他们在 Airport table 中引用了 Airport_Code。我想知道我会去做那件事吗?我觉得我错过了一些明显的东西。我感谢提供的任何帮助我对数据库仍然是新手,我目前使用的是 Oracle 11g。

机场table

CREATE TABLE Airport
(
     Airport_Code VARCHAR2(7) CONSTRAINT pk_Airport Primary Key,
     City_Code VARCHAR2(3), 
     CONSTRAINT fk_Airport_City_Code 
         FOREIGN KEY(City_Code) REFERENCES City, 
     Airport_Name VARCHAR2(30)
);

航班数据 table:

CREATE TABLE FlightData
(
    Flt_Nbr VARCHAR2(3) CONSTRAINT pk_FlightData Primary Key,
    Depart_Code VARCHAR2(30), 
    Ariv_Code VARCHAR2(30)
);

要确保 Depart_CodeAriv_Code 始终引用 Airport table 中的机场,您需要:

  • 将这些列设为 NOT NULL
  • 确保它们与 Airport 中的键具有相同的数据类型。使它们的长度为 7.
  • 添加两个外键约束,每个都基于每一列。

例如,第二个 table 可能如下所示:

CREATE TABLE FlightData (
  Flt_Nbr VARCHAR2(3) CONSTRAINT pk_FlightData Primary Key,
  Depart_Code VARCHAR2(7) not null,
  constraint fk1 foreign key (Depart_Code) references Airport (Airport_Code),
  Ariv_Code VARCHAR2(7) not null,
  constraint fk2 foreign key (Ariv_Code) references Airport (Airport_Code)
);