问题在于:我有2个表,DEPARTMENT(主键:dname)和DEPARTMENT_LOCATION(主键:city,street,bldg,level),另一个表用来表示那两个名为DEPT_AT_LOC的表(主键:dname) ,城市,街道,建筑物,水平)
显然,DEPT_AT_LOC的主键是外键的组合,根据主键的定义,它们不是NULL。但是,我的讲师要求DEPARTMENT表中的部门名称的ON DELETE,DEPT_AT_LOC中的外键dname必须设置为NULL ???
任何人都可以帮我吗?我通过电子邮件给讲师发了问,但他坚持认为有一种方法可以做到这一点,说一些与候选键相关的内容。
答案 0 :(得分:1)
在DEPT_AT_LOC上引入名为“id”(候选键)的列,并将该列作为主键。然后,您将能够将DEP_AT_LOC上的dname设置为无效ON DELETE。
您的数据库将不再确保您从未拥有重复的DEPARTMENT - > DEP_AT_LOC中的DEPARTMENT_LOCATION连接记录。您必须将该检查移至应用程序层。
另外,为什么DEPT_AT_LOC包含已在DEPARTMENT_LOCATION中的列(城市,街道,建筑物,水平)?