超类型/子类型数据库实现

时间:2011-08-15 20:32:38

标签: database ms-access

我正在研究DB,我正努力强制执行子类型鉴别器。

(Super type) Employee Table: **Emp_ID**, F_Name,L_Name,Sex, Dept_Type {"H","S","N"}
(Sub-type) Hardware Table: **Emp_ID**, Level,Manager....
(Sub-type) Software Table: **Emp_ID**, Experience,Skill....
(Sub-type) Network Table: **Emp_ID**, Certification,Proficiency....

我需要知道如何在DB MS-Access级别强制执行带有Dept_Type“H”的EMP ID只能在硬件表中插入记录而不是在软件或网络表中。类似地,带有Dept_Type“S”的EMP_ID只能在软件表中插入记录,而不能在其他两个表中插入记录。

有没有办法在使用MS Access的数据库级别上强制执行?或者它只能通过应用程序强制执行

1 个答案:

答案 0 :(得分:0)

如果您的意思是:a)硬件表中列出的员工必须是带有Dept_Type H的员工表中列出的员工,并且b)软件表中列出的员工必须是带有Dept_Type S的员工表中列出的员工,你可能会尝试这样的事情:

  1. 将Dept_Type字段添加到每个硬件和软件表中。
  2. 在Hardware表的Dept_Type字段中,将Required属性设置为Yes,将Validation Rule属性设置为“H”。
  3. 在Software表的Dept_Type字段中,将Required属性设置为Yes,将Validation Rule属性设置为“S”。
  4. 在Employee表中,为Emp_ID和Dept_Type字段的组合创建唯一索引。
  5. 在Emp_ID和Dept_Type字段的组合上添加一个强制在Employee表(在“one”侧)和Hardware表(在“many side”上)之间的参照完整性的关系。
  6. 在Emp_ID和Dept_Type字段的组合上添加一个强制在Employee表(在“one”侧)和Software表(在“多边”上)之间的参照完整性的关系。