Я проектирование базы данных (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 and Guest? и какова была бы лучшая практика для реализации этого?
Спасибо,
Непосредственно, но помогает вам почувствовать влияние вашего чувства: http://blogs.tedneward.com/2006/06/26/The+Vietnam+Of+Computer+Science. aspx – kamahl