2个实体之间的关系不同

问题描述 投票:0回答:1

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

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

根据这个说法我做了这样的错误 -

                   _________
                  | Airline |
                   ---------
                       |
                      has
                   ____|____ 
                  | Flights |
                   ---------
               /               \
            s.has             d.has
      _______/______       ______\_______
     |source_airport|     | dest_airport |
      --------------       --------------
  • 现在我遇到了最后一个属性距离的问题。我应该如何将它放在上面的erd?
  • 或者我认为机场将是一个单一的实体,其中航班和机场将有他们之间的关系。但是,如果发生这种情况,如何区分它们之间的源和目标部分以及解决距离属性的问题?
database database-design database-schema entity-relationship erd
1个回答
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表中。

© www.soinside.com 2019 - 2024. All rights reserved.