首页 > 解决方案 > 外键引用

问题描述

我在课堂上提到FlightData表中的 2 个外键是Depart_Code,并且Ariv_Code在我们给出的关系模式中,没有任何表可以引用它们作为主键。

在课堂上我被告知他们Airport_CodeAirport表格中引用。我想知道我会这样做吗?我觉得我错过了一些明显的东西。我很感激提供的任何帮助我对数据库还是新手,我目前在 Oracle 11g 上。

机场

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)
);

飞行数据表:

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

标签: sqldatabase-designoracle11gforeign-keysrdbms

解决方案


为确保Depart_CodeAriv_Code始终参考Airport表中的机场,您需要:

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

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

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)
);

推荐阅读