【发布时间】:2015-12-09 10:13:16
【问题描述】:
我希望制作一个指向航班表的路线表。
但是,每条路线最多可以有 25 个航班,我希望每个航班都是外键。
这样做表好像很浪费:
CREATE TABLE routes (
id SERIAL PRIMARY KEY,
flight1 INT references "flights" (id),
flight2 INT references "flights" (id),
...
flight24 INT references "flights" (id),
flight25 INT references "flights" (id),
rating INT NOT NULL
);
因为,航班的平均数量应该在 8 左右。我将用 NULL 填充空航班。所以平均路由将包含 17 个 NULL。
这是正确的方法吗?我查看了任意长度的外键数组,但 psql (9.3.10) 似乎不支持这些外键
【问题讨论】:
-
您可能需要一个额外的表(“联结表”)来将路线与航班关联起来。
-
该联结表是否还有 25 个航班 ID 列?或者,路由表会指向联结表 25 次吗?
-
不,每条路线将变为 25 行(或更少)。
-
知道了。所以要查询路线 1 中的所有航班,只需
SELECT flightid FROM rfjunction WHERE routeid = 1?然后从这些航班 ID 中选择所有信息? -
阅读规范化
标签: sql postgresql create-table