Database design 外键可为空时如何绘制表
我无法创建此关系图。我知道怎么了,也明白为什么。飞行段(左)中的Route_ID可以为空,而Route表(右)中的Route_ID不能为空 但是FlightLeg中的Route_ID可以合法地为空。可能用户还没有指定路线。但是当它被指定时,我想确保routes表中有一个相关的行。我可以(并且已经)确保Route_ID是从Route表中的有效路由列表中选取的,因此不存在用户输入错误的可能性。他们总是选择一条有效的路线。他们可能根本就不会选择路线。这阻止了我创建这个关系图 正因为如此,我知道图表工具是正确的,这意味着我走错了方向。任何人都可以建议如何使这项工作 我需要允许用户不指定路由,但当他们指定路由时,它必须是有效的路由 我如何对此进行图解并创建关系 谢谢Database design 外键可为空时如何绘制表,database-design,foreign-keys,relational-database,Database Design,Foreign Keys,Relational Database,我无法创建此关系图。我知道怎么了,也明白为什么。飞行段(左)中的Route_ID可以为空,而Route表(右)中的Route_ID不能为空 但是FlightLeg中的Route_ID可以合法地为空。可能用户还没有指定路线。但是当它被指定时,我想确保routes表中有一个相关的行。我可以(并且已经)确保Route_ID是从Route表中的有效路由列表中选取的,因此不存在用户输入错误的可能性。他们总是选择一条有效的路线。他们可能根本就不会选择路线。这阻止了我创建这个关系图 正因为如此,我知道图表工具
编辑:没有10个代表点,不能发布一张该死的照片。啊!希望链接能起作用。正确的方法是使用多对一关系。所以
request_flight_legs >--o route
该关系意味着请求飞行\u航段
可能有一条航线,在这种情况下请求飞行\u航段。航线id
将有一个值。如果request\u flight\u legs
没有路线(尚未),则该表中的route\u id
将为空。它在request\u flight\u legs
上的外键中实现为可空列。在所有情况下,route.route\u id
总是有一个值。它是一个不可为空的列
有什么东西阻止你这么做吗?我不明白。只需在
request\u flight\u leg
表中将route\u id
设为空即可。(您可能还应该提到您正在使用的工具,因为这听起来像是工具问题,而不是“SQL”问题)我已经提到了flight legs表中的Route_ID可以为null。问题是它在路由表中不能为null。而且,该工具是普通的旧SSM。谢谢显然,一定有什么我违反了,即使我的设置正如你所建议的。Legs.Route_ID可为空。Route.Route_ID是主键,不可为空。以前从未听说过“多对一”关系,但这正是我想要的。在SSMS中使用图表生成器。我认为存在数据冲突问题,无法创建此关系。request\u flight\u legs
表上是否有外键?看看一些问题:两个表是否在同一个数据库中?你有正确的权限吗?抱歉,我不确定您是从现有数据库创建图表还是使用图表创建新表?您是否遇到特定错误或无法更改属性。。。问题太多:)尝试在flight_legs表上创建FK时发生此错误。基本上,我的外键可以为null(可以在不指定route_id的情况下创建记录,稍后再添加),但当然,路由表上的主键不能为null。我认为正是这种违反阻止了fk的产生。无法将可能为空的fk添加到绝对不为空的pk。也许我看错了,事实上,这两个表之间没有我想象中的关系。我只想确保,如果在任何航班航段中输入了路线id,那么路线id就存在于路线表中。也许这根本不是一种关系?你想做的基本上是定义一个外键(或者更准确地说是一个可选的外键),所以存在一种关系。确切的错误消息是什么?