gpt4 book ai didi

mysql - 表可以与其他表关联时的数据库结构 - 但一次只能与一个表关联

转载 作者:行者123 更新时间:2023-11-29 07:03:03 24 4
gpt4 key购买 nike

我的车辆表包含一些可能涉及公共(public)汽车和汽车的信息。但我还需要公共(public)汽车或汽车的特定数据。

这样做是否正确:

Table Vehicle
Bus_id (ref key)
Car_id (ref key)

Table Bus

Table Car

然后,Vehicle 可以同时引用汽车和公共(public)汽车,但事实并非如此。

或者像这样:

Table Vehicle

Table Bus
Vehicle_id (ref key)

Table Car
Vehicle_id (ref key)

但是,公共(public)汽车和汽车可以同时引用相同的车辆信息。

如果车辆信息具有特定数据,我如何才能实现该车辆信息仅与公共(public)汽车或汽车相关?

最佳答案

如果您希望 SQL Server 帮助强制执行此操作,您可以使用指向公共(public)汽车或汽车的车辆表(如第一个示例所示),并使用检查约束和过滤索引来完成此操作:

CREATE TABLE VEHICLE (
[VEHICLE_RECID] integer IDENTITY PRIMARY KEY CLUSTERED,
[BusID] integer NULL REFERENCES [BUS] ([BUS_RECID]),
[CarID] integer NULL REFERENCES [CAR] ([CAR_RECID]),
CONSTRAINT [CK_VEHICLE_OnlyCarOrBus] CHECK (
([BusID] IS NULL AND [CarID] IS NOT NULL)
OR ([BusID] IS NOT NULL AND [CarID] IS NULL))
));

CREATE UNIQUE INDEX [BusID] ON VEHICLE ([BusID]) WHERE [BusID] IS NOT NULL
CREATE UNIQUE INDEX [CarID] ON VEHICLE ([CarID]) WHERE [CarID] IS NOT NULL

关于mysql - 表可以与其他表关联时的数据库结构 - 但一次只能与一个表关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42699548/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com