2011-05-08 67 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