[英]one to one relationship between three tables
嗨我想在三个表之间实现一个或一个关系,这样rtTicketId(1)只能用于vmID(1)并且不能被dbId(1)使用。
create table IF NOT EXISTS RequestTable (
rtTicketId bigserial unique not null AUTO_INCREMENT,
primary key (rtTicketId));
create table IF NOT EXISTS Vm (
vmId bigserial unique not null AUTO_INCREMENT,
primary key (vmId),
foreign key (rtTicketId) references RequestTable(rtTicketId));
create table IF NOT EXISTS Db (
dbId bigserial unique not null AUTO_INCREMENT,
rtTicketId bigserial unique not null,
primary key (dbId),
foreign key (rtTicketId) references RequestTable(rtTicketId));
我做了这个,但这只创造了两个分开的一对一关系。 我希望rt id是唯一的。 现在,vm和db表都能够使用相同的rtTicketId连接到请求表。 我不想那样
也许多态关联会有所帮助; 例如,由于DB具有存储rtTicketId的列,而不是VM,因此RT将具有2列,例如fkId和fkType,fkId将主键存储在VM或DB中,fkType定义查询时(DB或VM)的位置。
另请参见此处: 可以对两个可能的表之一执行MySQL外键吗?
我能想到的另一个选择是以编程方式执行此操作,例如:
SELECT * FROM RequestTable WHERE rtTicketId NOT IN(从your_other_table_vm_or_db中选择DISTINCT rtTicketId)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.