我应该为共享属性创建父表吗?
问题描述:
我设计的数据库(MySQL的),其中我有两个表的员工和客人如下:我应该为共享属性创建父表吗?
CREATE TABLE employee (
`EMP_ID` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`FIRST_NAME` VARCHAR(8) NOT NULL,
`MID_NAME` VARCHAR(11),
`LAST_NAME` VARCHAR(8) NOT NULL,
`BIRTHDAY` DATE,
`COUNTRY_ID` INT,
`NAT_ID` VARCHAR(8) NOT NULL,
`ID_EXP_DATE` DATE,
`ID_TYPE` VARCHAR(8) NOT NULL,
`Mobile` VARCHAR(8) NOT NULL,
`PHONE` VARCHAR(8) NOT NULL,
`EMAIL` VARCHAR(27) NOT NULL,
`DEPT_ID` TINYINT NOT NULL references DEPARTMENT (ID),
`POSITION` VARCHAR(20),
`EMP_TYPE` TINYINT NOT NULL references EMP_TYPES (type),
`JOINDATE` DATE,
`SALARY` MEDIUMINT DEFAULT 0 ,
`WORKEMAIL` VARCHAR(30),
`MARITALSTAT` VARCHAR(7),
`EMERGCONTACT` VARCHAR(22),
`EMERG_CONT_PHN` VARCHAR(11),
`GENDER` VARCHAR(6),
`RESUMEURL` VARCHAR(60),
`RELIGION` VARCHAR(11),
PRIMARY KEY (`EMP_ID`));
CREATE TABLE Guest (
`guest_ID` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`FIRST_NAME` VARCHAR(8) NOT NULL,
`MID_NAME` VARCHAR(11),
`LAST_NAME` VARCHAR(8) NOT NULL,
`BIRTHDAY` DATE,
`COUNTRY_ID` INT,
`NAT_ID` VARCHAR(8) NOT NULL,
`ID_EXP_DATE` DATE,
`ID_TYPE` VARCHAR(8) NOT NULL,
`Mobile` VARCHAR(8) NOT NULL,
`PHONE` VARCHAR(8) NOT NULL,
`EMAIL` VARCHAR(27) NOT NULL,
`WORKEMAIL` VARCHAR(30),
`MARITALSTAT` VARCHAR(7),
`EMERGCONTACT` VARCHAR(22),
`EMERG_CONT_PHN` VARCHAR(11),
`GENDER` VARCHAR(6),
`RELIGION` VARCHAR(11),
..................................// More attributes specific for guest table
PRIMARY KEY (`Guest_ID`));
由于两个表都有自动生成主键和它如果他们分享来自人的主键,则不合适。如果创建一个名为person的表,并将所有常用属性和两个子表作为Employee和Guest创建,那么这会是一个好主意吗? 以及实施此操作的最佳做法是什么?
谢谢你,
答
有一些事情要考虑:
的员工可以客串,反之亦然? 如何比较它们?
如果这对你的应用程序起到了作用,我会考虑一个ParentTable,因为如果一个Employee也是一个Guest,你可以很容易地弄清楚。所以你可以轻松地比较它们。
另一方面,您可以做第三个选项: 一个称为个人信息的表。 雇员也有此参考,客人也有。 如果一位员工和一位来宾都回避相同的条目,则知道他们是同一个人。
模式:
是该模式是这样的:
表: PersonalInformation
ID(主键,自动增量)
,并把所有的信息在这里
表员工
ID(主键,自动INC INT)
PersonalInformation_ID(ForeignKey的到PersonalInformation.ID)
添加您的员工在这里特定的列
表客户
ID(主键, auto inc int)
PersonalInformation_ID(ForeignKey to PersonalInformation.ID)
在此处添加您的访客特定列
希望这可以帮助你实现它,否则再问一次。
没有直接关系,但有很大的帮助获得你的desicion的影响的感觉: http://blogs.tedneward.com/2006/06/26/The+Vietnam+Of+Computer+Science。 aspx – kamahl 2012-03-11 17:42:52