【发布时间】:2015-09-18 20:57:19
【问题描述】:
我刚刚开始了 Oracle SQL 的课程,我们被分配了创建 3 个实体表和 2 个关系表的任务。他给了我们这些字段并说在我们认为有必要时添加:
Course: department, semester, maximumEnrolled
Instructor: firstName, lastName, ssn
Room: roomNumber, building
Teaches: instructor, course
Uses: course, room
当我创建表时,只有前 4 个有效,但我无法创建使用表。错误是:
ORA-02270: 此列列表没有匹配的唯一键或主键。
这就是我所做的:
CREATE TABLE course
(course_id NUMBER(4) PRIMARY KEY,
courseName VARCHAR2(30) NOT NULL,
department VARCHAR2(50),
semester VARCHAR2(10),
maximumEnrolled NUMBER(36) NOT NULL);
CREATE TABLE room
(roomNo NUMBER(5) PRIMARY KEY,
building VARCHAR2(10));
CREATE TABLE instructor
(instructor_id NUMBER(6) PRIMARY KEY,
firstName VARCHAR2(20),
lastName VARCHAR2(30) NOT NULL
ssn NUMBER(9) NOT NULL);
CREATE TABLE teaches
(instructor_id NUMBER(5) NOT NULL,
course_id NUMBER(4) NOT NULL,
teachingCourse VARCHAR2(4) PRIMARY KEY,
CONSTRAINT instructor_fk FOREIGN KEY (instructor_id) REFERENCES instructor (instructor_id)
CONSTRAINT course_fk FOREIGN KEY (course_id) REFERENCES course (course_id));
CREATE TABLE uses
(course_id NUMBER(4) NOT NULL,
roomNo NUMBER(5) NOT NULL,
roomUse VARCHAR2(4) PRIMARY KEY,
CONSTRAINT course_fk FOREIGN KEY (course_id) REFERENCES course (course_id)
CONSTRAINT room_fk FOREIGN KEY (roomNo) REFERENCES room (roomNo));
我认为问题可能是我在教表中使用 course_id 作为 FK,所以我尝试了:
CREATE TABLE uses
(roomUsage VARCHAR2(30) PRIMARY KEY,
roomNo NUMBER(5) NOT NULL,
courseName VARCHAR2(30) NOT NULL,
CONSTRAINT room_fk FOREIGN KEY (roomNo) REFERENCES room (roomNo),
CONSTRAINT course_fk FOREIGN KEY (courseName) REFERENCES course (courseName));
但它也不起作用并给出了同样的错误。我做错了什么?
【问题讨论】:
标签: sql oracle foreign-keys primary-key