gpt4 book ai didi

sql - 引用一个表或另一个表的表行

转载 作者:行者123 更新时间:2023-12-04 22:03:50 31 4
gpt4 key购买 nike

我有一个包含某种项目的表,以及这些项目所属的两个表(ab) .

一项是指或者a中的一行或者b中的一行。一个 ab 可以有多个项目。

有没有比下面的更好的设计(使用Oracle 10)?

有什么需要注意的陷阱吗?

id   a_id(fk)    b_id(fk)
1 1 NULL
2 1 NULL
3 NULL 1
4 2 NULL

最佳答案

从很多方面来说,这是一个非常好的设计:

  • 通过 a_id 上的外键,您可以强制链接到表 A。
  • 使用 b_id 上的外键,您可以强制链接到表 B。
  • 1:many 关系(项目与表 A 之间以及项目与表 B 之间)均已正确存储。

唯一的障碍是这个数据库结构本身不会检查一个项目是否只链接到 A 或 B 中的一个(而不是两者)。检查 Items 表上的约束将完成这项工作。

伪代码示例:

CONSTRAINT a_eor_b CHECK 
(
NOT (a_id IS NULL AND b_id IS NULL)
AND NOT (a_id IS NOT NULL AND b_id IS NOT NULL)
)

关于sql - 引用一个表或另一个表的表行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2093448/

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