繁体   English   中英

三个表之间的一对一关系

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM