【问题标题】:How to make foreign key from two different table in third table?如何从第三张表中的两个不同表中制作外键?
【发布时间】:2021-09-01 12:55:19
【问题描述】:

我有三个表命名为:

Staff(id,name,address);
Members(id,name,address);
Plans(id,Userid,type);

我想为 Staff 和 Members 表从 Plans 外键创建 Userid 我该怎么做?

【问题讨论】:

  • 我正在使用 SQL PLUS 和 oracle 11g

标签: oracle oracle11g foreign-keys sqlplus


【解决方案1】:

嗯……不是那样的。

员工和成员应存储在同一个表中,并附加列(和要引用的表)来说明某人是“员工”还是“成员”。那么plans 表就没有问题了。

SQL> create table type_sm
  2    (id_sm       number       constraint pk_tsm primary key,
  3     name        varchar2(20) constraint ch_typ check (name in ('staff', 'member'))
  4    );

Table created.

SQL> create table staff_members
  2    (id_sta_mem  number constraint pk_stamem primary key,
  3     id_sm       number constraint fk_sm_typ references type_sm (id_sm),
  4     name        varchar2(20),
  5     address     varchar2(30)
  6    );

Table created.

SQL> create table plans
  2    (id_pla      number constraint pk_pla primary key,
  3     id_sta_mem  number constraint fk_plastamem references staff_members (id_sta_mem)
  4    );

Table created.

SQL>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-10
    • 1970-01-01
    • 2023-03-25
    • 2018-06-13
    • 1970-01-01
    • 1970-01-01
    • 2014-04-12
    相关资源
    最近更新 更多