在我的项目中,我有一个部分说 -
航空公司有许多航班,每个航班有一个来源(机场)和一个或多个目的地(机场)。对于每个源目标对,您必须记录距离。
根据这个说法我做了这样的错误 -
_________
| Airline |
---------
|
has
____|____
| Flights |
---------
/ \
s.has d.has
_______/______ ______\_______
|source_airport| | dest_airport |
-------------- --------------
评论太久了。您可以使用两个表来表示给定航班,一个用于位置,另一个用于将一个位置与另一个位置相关联的联结表。
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
表中。