Sql 一张桌子';s复合主键是否用作另一个表上复合主键的一部分?

Sql 一张桌子';s复合主键是否用作另一个表上复合主键的一部分?,sql,oracle,Sql,Oracle,我创建了三个表。表1的唯一键与表2的唯一键一起用作表2的复合主键。我尝试在表3的复合键中使用表2的复合键部分。但是我做不到?有人能告诉我是谁吗 table 1: create table emp1( associate_id number(5) not null, associate_name varchar2(25), salary decimal(10,2), doj date, grade varchar2(6), constrain

我创建了三个表。表1的唯一键与表2的唯一键一起用作表2的复合主键。我尝试在表3的复合键中使用表2的复合键部分。但是我做不到?有人能告诉我是谁吗

table 1: 
create table emp1( 
    associate_id number(5) not null, 
    associate_name varchar2(25), 
    salary decimal(10,2),
    doj date,
    grade varchar2(6),
    constraint emp1_cons unique(associate_id)
);

table 2:
create table project(
    associate_id number references emp1(associate_id) not null, 
    pm_id number(5), 
    project_id varchar2(10) unique,
    project_name varchar2(20),
    project_desc varchar2(20),
    status varchar2(20),
    grade varchar2(6),
    primary key(associate_id,project_id)
);

table 3:
create table department(
    dept_id varchar2(5), 
    project_id varchar2 references project(project_id), 
    dept_name varchar2(10), 
    dept_code number(5), 
    proj_startdate date, 
    proj_enddate date, 
    primary key(dept_id,project_id)
);
执行的时候说左偏执缺失


如何使用另一个表复合主键的部分创建复合主键?

您的模式设计似乎有点缺陷。你想做什么样的约束

我不明白你为什么用复合键

create table emp1(
    associate_id number(5) not null, -- PK
    associate_name varchar2(25), 
    salary decimal(10,2), 
    doj date,
    grade varchar2(6),
    primary key(associate_id)
);

create table project(
    project_id varchar2(10), -- PK
    associate_id number references emp1(associate_id) not null, 
    pm_id number(5), 
    project_name varchar2(20), 
    project_desc varchar2(20),
    status varchar2(20),
    grade varchar2(6),
    primary key(project_id)
);

create table department(
    dept_id varchar2(5),  -- PK
    project_id varchar2 references project(project_id),
    dept_name varchar2(10), 
    dept_code number(5), 
    proj_startdate date, 
    proj_enddate date, 
    primary key(dept_id)
);
如果您使用的是Oracle(可以这么说!),那么您忘记了指定department.project\u id的大小