外键可以为空时如何绘制表格

时间:2014-03-14 20:23:20

标签: database-design foreign-keys relational-database

http://i.stack.imgur.com/exoYY.jpg

我无法创建此图表关系。我知道什么是错的,理解为什么。飞行腿(左)中的Route_ID可以为空,并且Route_id在路径表(右)中无法为空。

但是FlightLeg中的Route_ID可以合法地为空。也许用户还没有指定路线。但是当指定 时,我想确保路由表中有一个相关的行。我可以(并且已经确保)确保从路由表中的有效路由列表中选择Route_ID,因此不存在用户输入错误的可能性。他们总是选择有效的路线。他们根本不会选择一条路线。这阻止了我创建这种图表关系。

因此,我知道图表工具是正确的,这意味着我以错误的方式解决这个问题。任何人都可以建议如何使这项工作?

我需要允许用户不指定路由,但是当他们这样做时,它必须是有效的路由。

我如何计算并创建关系?

谢谢!

编辑:不能发布没有10个重复点的friggin pic。 AARGH!希望链接有效。

1 个答案:

答案 0 :(得分:0)

绘制此图的正确方法是使用多个到可选的一个关系。所以

request_flight_legs >--o route

关系意味着request_flight_legs可能有路线,在这种情况下request_flight_legs.route_id会有一个值。如果request_flight_legs没有路由(尚未),则该表中的route_id将为空。它在request_flight_legs的外键中实现为可为空的列。在所有情况下,route.route_id将始终具有值。这是一个不可为空的专栏。

有什么事阻止你这样做吗?