gpt4 book ai didi

sql - 如何根据事件关联 3 个表

转载 作者:行者123 更新时间:2023-12-04 00:09:01 25 4
gpt4 key购买 nike

我有一张表格,其中包含关于不同类型的事件的信息,这些事件可以由两类人员完成公民和 worker

所以对于他们每个人,我都有各自的表格

civil{  civil_id, name, age,telephone...} the  primary key is civil_id

worker{ worker_id, name, duty, department...} the primary key is worker_id

那么事件表有一个所有可能事件的列表

event {type_of_event} the  primary key is type_of_event

然后我打算将信息存储在其他表中

使用 eventype,表示完成工作的人( worker 或公民)

id  event_type       date      person
-----------------------------------
1 type1 12-12-12 x
2 type1 05-12-10 y
3 type2 02-12-12 y

现在在这个设计中,我不知道如何关联谁做了这项工作,如果我只有一种人(又名民事),我只会在最后一张表中的 person 字段中存储 Civil_id....但是怎么知道是民用的还是 worker 的,还需要其他中间表吗?

最佳答案

一般来说,有一些方法可以模拟这种情况......

使用独占外键

enter image description here

event 中,civil_idworker_id 都可以为 NULL,但也有一个约束确保 完全一致 在任何给定时间它们都是非 NULL 的:

CHECK (
(civil_id IS NOT NULL AND worker_id IS NULL)
OR (civil_id IS NULL AND worker_id IS NOT NULL)
)

使用继承1

enter image description here

有关继承的更多信息,请查看 ERwin Methods Guide 中的“子类型关系”一章。在 this post .


1 又名。类别、子类型、子类化、泛化层次......

关于sql - 如何根据事件关联 3 个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15128222/

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