机场和航线数据库的ERD

时间:2014-04-27 07:37:21

标签: database database-design entity-relationship

我正在设计一个机场数据库以及它们如何通过路线相互连接。 Idea是openflights的简单版本。

这是我的ERD:

ERD

它有四个实体,即:机场,航线,航空公司和飞机。关系如下:机场和航线之间的二元关系(出发地和目的地),航空公司服务该航线,最后航空公司有一架通常在该航线上使用的飞机。

我不确定所涉实体的有效性及其关系。如果有人可以指出我的错误,那就太好了。

2 个答案:

答案 0 :(得分:1)

我不会称之为路由表。

路线有路点和轨道,可能会有变化。例如,从KFJK到KORD的路线是COATE Q436 EMMMA WYNDE5(这些是航点,而WYNDE5是到达奥黑尔)。

您的图表更像是目的地表格。大多数航班是单人航班(“直航”),对于多航班航班,您需要单独跟踪这些航班。

我会跟踪航班(具有唯一号码)而不是您的“路线号”变量。可以通过不同的设备飞行。例如,可以在777或A380中飞行同一航班。

许多航空公司使用相同的航线,但使用不同的航班;每次飞行包括以下内容:

  1. 唯一号码
  2. 飞机类型
  3. 来源
  4. 目的地(可以是多个或中间的)。
  5. 路线飞行是预定义的。看看肯尼迪国际和芝加哥奥黑尔之间的this table航班。

    如果您点击ident列(这是航班号),您将看到为该航班飞行的航线。

    我会做出以下更改:

    1. 从飞机桌上移除'速度';并将此表重命名为'equipment'。
    2. 将'别名'重命名为'ICAO',并在那里添加他们的ICAO代码(三个字母)。
    3. 航空公司没有路线;所以我会将路线重命名为'目的地'。
    4. 机场没有路线号码;所以我不确定那里做了什么。
    5. 机场有两个主要标识符,ICAO标识符代码(4个字母)和IATA标识符(3个字母)。我会加上这两个。
    6. 我会将路线号重命名为“航班号”,然后将实际航班号添加到其中;每条腿单独输入。这将照顾您的多程(多站)航班。
    7. 我会添加一个flight_equipment表,以便在每个航班之间建立链接,并使用哪个设备。目前航班和飞机之间没有联系。

答案 1 :(得分:0)

我想到了几个问题:

  • Route
    • 什么是are_NoDep_airDest_air
    • no_of_stops:这个数字真的足够吗,还是你需要停止?
    • 为什么ends_adstarts_from和交集? (希望我能读到这个吗?)
  • airport
    • 为什么会有route_No
  • Route<有> airline
    • 这真的是M-M吗?即使他们使用相同的机场,每家航空公司也不会运营自己的航线吗?
  • airline
    • 什么是modelNo
    • no_of_planes:您已经隐含地获取了该信息,通常无需再次存储它。
    • aeroplane:这些是真正的飞机吗(例如,一家航空公司会有几架空中客车A380飞机?)。如果是这样,定义类型的附加表可能有意义。

一般:

  • 确保使用一致的命名:
    • 案例:Route vs airline
    • 避免缩写(个人观点):Dest_air vs destination_airport
    • 一致使用下划线:modelNo vs route_No

修改:由于您决定忽略中间停靠点,因此您的模型可能如下所示:

  • 航空公司
    • airline_id(PK)
    • name,alias,...
  • airline_aeroplane
    • airline_aeroplane_id(PK)
    • airline_id(FK)
    • model,make,capacity,...
  • 机场
    • airport_id(PK)
    • 姓名,城市,国家,......
  • 路线
    • route_id(PK)
    • route_number,number_of_stops,...
    • departure_airport(FK)
    • destination_airport(FK)
  • airline_route
    • airline_id(FK)(PK)
    • route_id(FK)(PK)