2013-02-18 76 views
0

我已經創建了三個tables.table 1的唯一鍵用作表2的複合主鍵以及表2的唯一鍵。我嘗試使用表3組合鍵中表2組合鍵的一部分。但IAM無法做到這一點?任何人都可以告訴我嗎?可以將一個表的複合主鍵用作另一個表上覆合主鍵的一部分嗎?

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) 
); 

在執行它說缺少左paranthesis ....

如何創建使用其他表的複合主鍵的一部分複合主鍵?

回答

1

您的模式設計看起來有點缺陷。你想要做什麼樣的約束?

我不明白你爲什麼使用複合鍵。

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) 
); 
0

如果您使用的是Oracle(它有助於說!),您忘記指定department.project_id的大小。

相關問題