2011-05-08 66 views
3

我正在sql server 2005中創建一個學生數據庫,但它給了我關於外鍵的錯誤,請檢查它的問題是什麼。外鍵SQL服務器

CREATE TABLE STUDENT 
(
STUDENT_REGNO INT NOT NULL PRIMARY KEY, 
STUDENT_FIRSTNAME VARCHAR(30) NOT NULL, 
STUDENT_LASTNAME VARCHAR(20) NOT NULL, 
STUDENT_FATHER_NAME VARCHAR(30) NOT NULL, 
STUDENT_EMAIL VARCHAR(20), 
STUDENT_MOBILE_NO VARCHAR(15), 
STUDENT_PHONE_NO VARCHAR(15), 
STUDENT_ADDRESS VARCHAR (40), 
DEPARTMENT_ID INT CONSTRAINT DEP_1 FOREIGN KEY 
REFERENCES DEPARTMENT(DEPARTMENT_ID), 
ACADEMIC_ID INT CONSTRAINT ACDEMIC FOREIGN KEY 
REFERENCES ACADEMIC(ACADEMIC_ID), 
CLASS_NAME VARCHAR(20) CONSTRAINT CLASS_1 FOREIGN KEY 
REFERENCES CLASS(CLASS_NAME) 
) 
CREATE TABLE FACULTY 
(
FACULTY_ID INT NOT NULL PRIMARY KEY, 
FACULTY_NAME VARCHAR(20) NOT NULL, 
FACULTY_FATHER_NAME VARCHAR(30) NOT NULL, 
FACULTY_EMAIL VARCHAR(20), 
FACULTY_ADDRESS VARCHAR(40) NOT NULL, 
FACULTY_MOBILE_NO VARCHAR(30), 
FACULTY_PHONE_NO VARCHAR(20), 
FACULTY_QUALIFICATION VARCHAR(20), 
DEPARTMENT_ID INT CONSTRAINT DEPARTEMNT_2 FOREIGN KEY 
REFERENCES DEPARTMENT(DEPARTMENT_ID), 
ACADEMIC_ID INT CONSTRAINT ACADEMIC_1 FOREIGN KEY 
REFERENCES ACADEMIC(ACADEMIC_ID) 
) 
CREATE TABLE USER1 
(
USERNAME VARCHAR(20) NOT NULL, 
USER_PASSWORD VARCHAR(6) NOT NULL, 
USER_TYPE VARCHAR(20) NOT NULL, 

) 
CREATE TABLE DEPARTMENT 
(
DEPARTMENT_ID int NOT NULL PRIMARY KEY, 
DEPARTMENT_NAME VARCHAR(20) NOT NULL, 
DEAPRTMENT_OFFICE_NO VARCHAR(20), 
) 
CREATE TABLE CLASS 
(
CLASS_NAME VARCHAR(20) NOT NULL, 
CLASS_STRENGTH INT NOT NULL, 
) 
CREATE TABLE ANNOUNCMENT 
(
ANNOUNCMENT_ID int NOT NULL PRIMARY KEY, 
ANNOUNCMENT_DESCRIPTION VARCHAR(50), 
ANNOUNCMENT_TITLE VARCHAR(45) 
) 
CREATE TABLE FORUM 
(
FORUM_ID int NOT NULL PRIMARY KEY, 
FORUM_NAME VARCHAR(35) NOT NULL, 
FORUM_DESCRIPTION VARCHAR(333), 
FORUM_DISCUSSION VARCHAR(22), 
POSTED_BY VARCHAR(34) 
) 
CREATE TABLE GRADE 
(
LETTER_GRADE CHAR NOT NULL , 
PERCENTAGE FLOAT NOT NULL, 
STUDENT_REGNO int CONSTRAINT STUDENT_5 FOREIGN KEY(STUDENT) 
REFERENCES STUDENT(STUDENT_REGNO), 
COURSE_ID int CONSTRAINT COURSE_1 FOREIGN KEY(COURSE) 
REFERENCES COURSE(COURSE_ID) 
) 
CREATE TABLE COURSE 
(
COURSE_NAME VARCHAR(20) NOT NULL, 
COURSE_CREDIT_HR INT NOT NULL, 
COURSE_DESCRIPTION VARCHAR(99), 
) 
CREATE TABLE TERM 
(
TERM_START_DATE DATETIME NOT NULL, 
TERM_END_DATE DATETIME NOT NULL, 
student_regno int CONSTRAINT STUDENT_2 FOREIGN KEY(STUDENT) 
REFERENCES STUDENT(STUDENT_REGNO) 
) 
CREATE TABLE PREVIOUS_ACADEMIC_INFO 
(
ACADEMIC_ID int NOT NULL PRIMARY KEY, 
DEGREE_DESCRIPTION VARCHAR(50), 
CERTIFICATION VARCHAR(30), 
DURATION DATETIME 
) 
CREATE TABLE TEACHER_COURSE 
(
AREA_OF_SPECILIZATION VARCHAR(30), 
faculty_id int CONSTRAINT FACULTY_1 FOREIGN KEY(FACULTY) 
REFERENCES FACULTY(FACULTY_ID) 
) 

,並第一個錯誤是

消息1769,級別16,狀態1,行65
外鍵 'STUDENT_5' 在 引用 無效列 '學生' 引用表 '成績'。
消息1750,級別16,狀態0,行65
無法創建約束。見前面的錯誤

+0

錯誤的詳細信息會有所幫助。 – 2011-05-08 13:58:56

+1

你想讓人們閱讀你的代碼,但你不會發布錯誤?這是否合理? – 2011-05-08 14:03:12

+0

@ Jay @ Mitch小麥:錯誤提到.....只是告訴我外鍵是否正確聲明。 – james 2011-05-08 14:06:23

回答

4
CREATE TABLE GRADE 
(
LETTER_GRADE CHAR NOT NULL , 
PERCENTAGE FLOAT NOT NULL, 
STUDENT_REGNO int CONSTRAINT STUDENT_5 FOREIGN KEY(STUDENT) REFERENCES STUDENT(STUDENT_REGNO), 
COURSE_ID int CONSTRAINT COURSE_1 FOREIGN KEY(COURSE) 
REFERENCES COURSE(COURSE_ID) 
) 

應該

CREATE TABLE GRADE 
(
LETTER_GRADE CHAR NOT NULL , 
PERCENTAGE FLOAT NOT NULL, 
STUDENT_REGNO int CONSTRAINT STUDENT_5 FOREIGN KEY(STUDENT_REGNO) REFERENCES STUDENT(STUDENT_REGNO), 
COURSE_ID int CONSTRAINT COURSE_1 FOREIGN KEY(COURSE_ID) REFERENCES COURSE(COURSE_ID) 
) 

等。雖然它不是必需的,你可以做

CREATE TABLE GRADE 
(
LETTER_GRADE CHAR NOT NULL , 
PERCENTAGE FLOAT NOT NULL, 
STUDENT_REGNO int CONSTRAINT STUDENT_5 REFERENCES STUDENT(STUDENT_REGNO), 
COURSE_ID int CONSTRAINT COURSE_1 REFERENCES COURSE(COURSE_ID) 
) 
+0

消息1767,級別16,狀態0,行1 外鍵'DEP_1'引用無效表'DEPARTMENT'。 消息1750,級別16,狀態0,行1 無法創建約束。查看以前的錯誤。 – james 2011-05-08 14:26:04

+0

現在這些錯誤正在降臨...... – james 2011-05-08 14:26:32

+0

您還需要按照正確的順序創建表格。 – 2011-05-08 14:28:59