对数据库表使用某种继承

时间:2014-05-27 09:08:33

标签: mysql sql inheritance enums create-table

是否有可能(以及如何实现它)与数据库表进行某种继承? 我打算有一个父表 X

CREATE TABLE `X` ( 
`xId` int(11) NOT NULL AUTO_INCREMENT, 
`addressId` int(11) NOT NULL, 
`poiType` enum('ParkingPOI','ChargingPOI') NOT NULL, 
`status` enum('AVAILABLE','NOT_AVAILABLE') NOT NULL 
PRIMARY KEY (`aId`), 
KEY `fk_x_address_idx` (`addressId`), 
CONSTRAINT `fk_address` FOREIGN KEY (`addressId`) REFERENCES `addresses` (`addressId`) 
ON DELETE NO ACTION ON UPDATE CASCADE) ENGINE=InnoDB AUTO_INCREMENT=217 DEFAULT CHARSET=utf8;

和子表 B

CREATE TABLE `B` (
`bId` int(11) NOT NULL AUTO_INCREMENT, 
`xId` int(11) NOT NULL', 
`status` enum('AVAILABLE','NOT_AVAILABLE','PARTLY_AVAILABLE') NOT NULL  
PRIMARY KEY (`bId`), 
KEY `aId` (`xId`), 
CONSTRAINT `fk_a` FOREIGN KEY (`xId`) REFERENCES `X` (`xId`) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

在表 X 中,我希望有类似ENUM的东西,其值从子表继承,例如:AVAILABLE,NOT_AVAILABLE。在父表( X )的此表/列中,只允许使用这些值。 但是,在子表中,此ENUM应该是extendend,以便可以使用值AVAILABE,NOT_AVAILABLE,PARTLY_AVAILABLE。

我怎样才能做到这一点?

0 个答案:

没有答案