Mysql 对数据库表使用某种继承
是否有可能(以及如何实现)对数据库表进行某种继承? 我想要一个父表X 和一张儿童桌B 在表X中,我希望有类似于枚举的东西,其值从子表继承,例如:AVAILABLE,NOT_AVAILABLE。在该表/父表(X)的列中,仅允许这些值。 但是,在子表中,应扩展此枚举,以便可以使用可用、不可用、部分可用的值Mysql 对数据库表使用某种继承,mysql,sql,inheritance,enums,create-table,Mysql,Sql,Inheritance,Enums,Create Table,是否有可能(以及如何实现)对数据库表进行某种继承? 我想要一个父表X 和一张儿童桌B 在表X中,我希望有类似于枚举的东西,其值从子表继承,例如:AVAILABLE,NOT_AVAILABLE。在该表/父表(X)的列中,仅允许这些值。 但是,在子表中,应扩展此枚举,以便可以使用可用、不可用、部分可用的值 我怎样才能做到这一点?你知道外键是什么,或者你至少听说过外键吗?为什么?什么意思?这对扩展枚举有什么帮助?知道外键意味着你对关系数据库有一些了解。了解它们有助于正确构建数据库模型。关系数据库中没有
我怎样才能做到这一点?你知道外键是什么,或者你至少听说过外键吗?为什么?什么意思?这对扩展枚举有什么帮助?知道外键意味着你对关系数据库有一些了解。了解它们有助于正确构建数据库模型。关系数据库中没有继承。有关系。它不是面向对象的,而是正在使用的关系代数,这意味着如果你想实现某些东西,你需要遵循关系数据库的规则。你的模型似乎不合适,我问你是否知道外键,以便引导你正确的方向。啊!我懂了。嗯,我不是SQL专家,但我基本上熟悉SQL、RDBMs、FK。。。我是一名Java程序员,我想知道是否有可能在关系数据库中“实现”类似于OO继承的东西。我知道我已经将一个对象映射到关系数据库表,并且我不能使用B.status扩展X.status…;-)
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;
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;