2个实体之间的关系不同

时间:2019-04-12 05:17:30

标签: database database-design database-schema entity-relationship erd

在我的项目中,我有一部分说-

  

航空公司有很多航班   并且每个航班都有一个来源(机场)和一个或多个目的地(机场)。对于每个源目的地对,您必须记录 距离

根据此声明,我已经做了一个erd-

                   _________
                  | Airline |
                   ---------
                       |
                      has
                   ____|____ 
                  | Flights |
                   ---------
               /               \
            s.has             d.has
      _______/______       ______\_______
     |source_airport|     | dest_airport |
      --------------       --------------
  • 现在我对最后一个属性 distance 有疑问。我应该如何将其与上面的erd放置在一起?

  • 或者,我认为机场将是一个实体,其中航班机场之间将具有关系。但是,如果发生这种情况,那么如何区分它们之间的 source 目的地 部分,以及使用< strong> 距离 属性?

1 个答案:

答案 0 :(得分:1)

评论太久。您可以使用两个表来表示给定的航班,一个表用于位置,另一个表用于将一个位置与另一个位置相关联的联结表。

CREATE TABLE locations (
    id INT NOT NULL PRIMARY KEY,
    name VARCHAR NOT NULL,
    latitude DOUBLE NOT NULL,
    longitude DOUBLE NOT NULL
);

CREATE TABLE flights (
    source_id INT NOT NULL,
    dest_id INT NOT NULL,
    PRIMARY KEY (source_id, dest_id),
    FOREIGN KEY (source_id) REFERENCES locations(id),
    FOREIGN KEY (dest_id) REFERENCES locations(id)
);

因此,现在航班只是flights联结表中的一个条目。每个机场的元数据都位于locations表中。