Ниже приведен табличный анализ проблем с вашим кодом.
Таблица COURSE
: ok
Таблица CLASS
:
CLASS_CODE INTEGER(5) NOT NULL
Тип данных INTEGER
не принимает длину
CHECK (CLASS_SECTION IN (0,1,2,3,4,5,6,7,8))
Столбец CLASS_SECTION
не существует в таблице. Я предполагаю, что вы имели в виду CLASS_CODE
.
CRS_CODE REFERENCES COURSE(CRS_CODE)
Объявление ограничения внешнего ключа должно быть помещено непосредственно в строку, определяющую ссылающийся столбец.
Таблица STUDENT
:
STU_PHONE INTEGER(4)
См. Выше
Таблица ENROLL
:
CLASS_CODE INTEGER (5)
См. Выше.
После устранения этих проблем можно успешно создать 4 таблицы.
Демонстрация на скрипте БД :
CREATE TABLE COURSE(
CRS_CODE VARCHAR(8) NOT NULL,
CRS_DESCRIPTION VARCHAR(35) NOT NULL,
CRS_CREDIT INTEGER DEFAULT 4 NOT NULL CHECK(CRS_CREDIT IN (1,2,3,4)),
PRIMARY KEY (CRS_CODE));
CREATE TABLE CLASS (
CRS_CODE VARCHAR(8) NOT NULL REFERENCES COURSE(CRS_CODE),
CLASS_CODE INTEGER NOT NULL CHECK (CLASS_CODE IN (0,1,2,3,4,5,6,7,8)),
CLASS_TIME VARCHAR(25) NOT NULL,
CLASS_ROOM CHAR(6),
PRIMARY KEY (CLASS_CODE)
);
CREATE TABLE STUDENT(
STU_NUM INTEGER NOT NULL,
STU_LNAME VARCHAR(25) NOT NULL,
STU_FNAME VARCHAR(20) NOT NULL,
STU_INIT VARCHAR(1),
STU_DOB DATE,
STU_HRS INTEGER DEFAULT 0 CHECK (STU_HRS>=0 AND STU_HRS<1000),
STU_CLASS VARCHAR(2) CHECK (STU_CLASS IN ('Fr', 'So', 'Jr', 'Sr', 'Gr')),
STU_GPA DECIMAL(3,2) DEFAULT 0.00 CHECK (STU_GPA BETWEEN 0.00 AND 4.00),
STU_PHONE INTEGER,
PRIMARY KEY (STU_NUM));
CREATE TABLE ENROLL(
ENROLL_GRADE VARCHAR(1) DEFAULT 'Z' CHECK (ENROLL_GRADE IN('A','B','C','D','F','I','W','Z')),
STU_NUM INTEGER REFERENCES STUDENT(STU_NUM),
CLASS_CODE INTEGER REFERENCES CLASS(CLASS_CODE)
);