Создать несколько таблиц sqlplus - PullRequest
0 голосов
/ 16 октября 2019

Я пытаюсь создать скрипт, который я буду запускать в sqlplus (Oracle Database). Он должен создать несколько таблиц, но когда я его выполняю, он просто говорит, что не распознает ни одной написанной команды. Это мой код прямо сейчас:

create table STUDENT(

    Name                varchar2(40) not null,
    Student_Number      number(10),
    Class               number(10),
    Major               varchar2(40),

    primary key(Student_Number)

);


create table COURSE(

    Course_name     varchar2(40) unique,
    Course_number   varchar2(40),
    Credit_hours    number(10),
    Department      varchar2(40),

    primary key(Course_number)

);


create table SECTION(

    Section_Identifier      number(10),
    Course_number           number(10) not null,
    Semester                varchar2(40) not null,
    Year                    number(10) not null,
    Instructor              varchar2(40),


    primary key(Section_Identifier)
    foreign key(Course_number) references COURSE(Course_number)

);


create table GRADE_REPORT(

    Student_Number          number(10), 
    Section_Identifier      number(10),
    Grade                   varchar2(40),

    primary key(Student_Number, Section_Identifier)
    primary key(Student_Number) references STUDENT(Student_Number)
    foreign key(Section_Identifier) references SECTION(Section_Identifier)

);


create table PREREQUISITE(

    Course_number           varchar2(40),
    Prerequisite_number     varchar2(40),

    primary key(Course_number, Prerequisite_number)
    foreign key(Course_number) references COURSE(Course_number)
    foreign key(Prerequisite_number) references COURSE(Course_number)

);

Я думаю, что этот код должен быть в порядке, но я не знаю, пропустил ли я что-то важное.

1 Ответ

1 голос
/ 22 октября 2019

Ну нет, код не верный. Вероятно, вам следует отладить SQL

Во-первых, вам нужно добавлять запятую после каждого объявления ограничения.

Во-вторых,

primary key(Student_Number) references STUDENT(Student_Number),

- это неправильный синтаксис. Вы не можете объявить второй первичный ключ и не можете ссылаться на другую таблицу, используя ограничение первичного ключа. Это внешний ключ и должен быть записан как ограничение FK.

В этой ситуации вы, вероятно, не должны делать свой первичный ключ внешним ключом. Поскольку у каждого учащегося может быть несколько отчетов об оценках, в результате получается отношение 1: много.

Вам следует отладить код, используя что-то вроде SQL Developer или Toad

...