繁体   English   中英

如何使用同一列的外键引用 2 个不同的表?

[英]How to reference 2 different tables with a foreign key of the same column?

这是包含“clientID”列的两个不同表的代码

CREATE TABLE IndividualClient (
    clientID varchar(30) NOT NULL PRIMARY KEY,
    name varchar(30) NOT NULL,
    address varchar(30) NOT NULL,
    phoneNumber varchar(30) NOT NULL
);

select * from IndividualClient;

CREATE TABLE CorporateClient (
    clientID varchar(30) NOT NULL PRIMARY KEY,
    name varchar(30) NOT NULL,
    address varchar(30) NOT NULL,
    phoneNumber varchar(30) NOT NULL,
    businessRegNumber int(30) NOT NULL
);

select * from CorporateClient;

这是我有外键的代码:

CREATE TABLE Project (
    Project_ID varchar(30) NOT NULL PRIMARY KEY,
    registrationDate date NOT NULL,
    projectTitle varchar(30) NOT NULL,
    description varchar(30) NOT NULL,
    clientID varchar(30) NOT NULL,
    foreign key (clientID) references IndividualClient (clientID),
    foreign key (clientID) references CorporateClient (clientID)

);

select * from project;

我想要的是“项目”表上的 clientID 列可以引用来自 individualClient 或 CorporateClient 的 clientID

这可能吗?

会有 ID 冲突,当然您可以通过每次插入时检查 ID 可用性来处理它,但考虑制作一个主表,其中两个表的列取决于客户端类型。

Client
------
Id
SomeCommonClientProperties

IndividualClient
----------------
ClientId
FirstName
LastName
Address
PhoneNumber

CorporateClient
---------------
ClientId
Name
Address
PhoneNumber
BusinessRegNumber

这样,您将引用表 Client 和唯一的 ClientId 将引导您到正确的个人/公司表。

PS。 我还会考虑引用客户的地址和联系人数据的单独表

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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