cMi*_*nor 2 sql database-design foreign-keys relational-database
我有一张表,其中包含有关不同类型事件的信息,这些信息可由民事和工人两类人员完成
所以对于他们每个人我有他们各自的表
civil{ civil_id, name, age,telephone...} the primary key is civil_id
worker{ worker_id, name, duty, department...} the primary key is worker_id
Run Code Online (Sandbox Code Playgroud)
然后事件表包含所有可能事件的列表
event {type_of_event} the primary key is type_of_event
Run Code Online (Sandbox Code Playgroud)
然后我计划将信息存储在其他表中
与事件类型,完成工作的人(工人或民事)
id event_type date person
-----------------------------------
1 type1 12-12-12 x
2 type1 05-12-10 y
3 type2 02-12-12 y
Run Code Online (Sandbox Code Playgroud)
现在,在这个设计,我不知道如何与人谁如果做的工作,我就只有一个什么样的人(又名公民)我想只有亲自领域的civil_id存放在这最后的表....但如何知道这是民用还是工人,我还需要其他中间表吗?
一般来说,有办法模拟这种情况......
在event
,两个civil_id
和worker_id
都是NULL,但也有一个约束,确保在任何给定时间其中一个非NULL为非NULL:
CHECK (
(civil_id IS NOT NULL AND worker_id IS NULL)
OR (civil_id IS NULL AND worker_id IS NOT NULL)
)
Run Code Online (Sandbox Code Playgroud)
有关继承的更多信息,请参阅" ERwin方法指南"和本文中的"子类型关系"一章.
1阿卡.类别,子类型,子类化,泛化层次......