创建一个 table,其中主键将来自两个不同的 table oracle 11g
Creating a table where the primary key will be from two different table oracle 11g
我有 3 个 table。架构如下:
员工(NID、姓名、薪水、职务、Phone、分支机构)
客户端(NID、名称、Insurance_type、Phone、地址、is_active、Pay_per_month、Start_year, End_year)
付款(NID,应付,应收)
支付 table 的主键将是 NID,它将继承自 Employee 和 Client table。如果我们合并 Employee 和 Client 表中的 NID 列,则所有 NID 都将是唯一的。有什么方法可以使 table 在 oracle 11g 中从客户端和员工 table 继承 NID?
这看起来不像是一个可行的设计。
执行此操作的标准方法是在 PAYMENT
table 中为每个父项设置一个单独的外键,即:
Payment (NID, NID_Client, NID_Emp, Payable, Receivable)
其中 NID - PAYMENT 的唯一键 table
NID_Client 是 Client.NID 值
NID_Emp 是 Employee.NID 值
要添加 FK 约束:
alter table payment ADD CONSTRAINT FK_Payment_Emp
FOREIGN KEY (NID_Emp) REFERENCES Employee(NID);
alter table payment ADD CONSTRAINT FK_Payment_Client
FOREIGN KEY (NID_Client) REFERENCES Client(NID);
我有 3 个 table。架构如下:
员工(NID、姓名、薪水、职务、Phone、分支机构)
客户端(NID、名称、Insurance_type、Phone、地址、is_active、Pay_per_month、Start_year, End_year)
付款(NID,应付,应收)
支付 table 的主键将是 NID,它将继承自 Employee 和 Client table。如果我们合并 Employee 和 Client 表中的 NID 列,则所有 NID 都将是唯一的。有什么方法可以使 table 在 oracle 11g 中从客户端和员工 table 继承 NID?
这看起来不像是一个可行的设计。
执行此操作的标准方法是在 PAYMENT
table 中为每个父项设置一个单独的外键,即:
Payment (NID, NID_Client, NID_Emp, Payable, Receivable)
其中 NID - PAYMENT 的唯一键 table
NID_Client 是 Client.NID 值
NID_Emp 是 Employee.NID 值
要添加 FK 约束:
alter table payment ADD CONSTRAINT FK_Payment_Emp
FOREIGN KEY (NID_Emp) REFERENCES Employee(NID);
alter table payment ADD CONSTRAINT FK_Payment_Client
FOREIGN KEY (NID_Client) REFERENCES Client(NID);