Попытка выполнить задание, но застряла на ORA-00906: отсутствует левая скобка - PullRequest
0 голосов
/ 30 ноября 2018

Я делаю курс по БД, это одно из первых заданий, я собираюсь его выполнить, но где-то в моем запросе REL_CURSOS_ALUMNOS есть проблема, которая заканчивается ошибкой ORA-00906.

REL_CURSOS_ALUMNOS - это таблица отношений "один ко многим" 1 'CURSOS(Id_Curso) ко многим ALUMNOS(NIF_Alumno).

Это мой запрос до сих пор:

CREATE TABLE PROFESORES(
  NIF_Profesor VARCHAR2(15) CONSTRAINT Prof_NIF_PK PRIMARY KEY,
  Nombre VARCHAR2(30),
  Apellido1 VARCHAR2(30),
  Apellido2 VARCHAR2(30),
  Direccion VARCHAR2(4000),
  Titulacion VARCHAR2(500),
  Salario FLOAT(10) CONSTRAINT Prof_sal_NN NOT NULL
);

CREATE TABLE ALUMNOS(
    NIF_Alumno VARCHAR2(15) CONSTRAINT Alum_NIF_PK PRIMARY KEY,
    Nombre VARCHAR2(30),
    Apellido1 VARCHAR2(30),
    Apellido2 VARCHAR2(30),
    Direccion VARCHAR2(4000),
    Sexo CHAR(1),
    Fecha_Nacimiento DATE
    );

CREATE TABLE CURSOS (
    Id_Curso VARCHAR2(15) CONSTRAINT Curs_Id_PK PRIMARY KEY,
    Nombre VARCHAR2(400) UNIQUE,
    NIF_Profesor VARCHAR2(15) REFERENCES PROFESORES (NIF_Profesor),
    Max_Alumnos NUMBER(5),
    Inicio_Fecha DATE,
    Final_Fecha DATE,
    Num_Horas NUMBER(10) NOT NULL,
    CONSTRAINT Curs_FechasIncorrectas CHECK (Final_Fecha > Inicio_Fecha));

CREATE TABLE REL_CURSOS_ALUMNOS (
  Id_Curso VARCHAR2(15) REFERENCES CURSOS(Id_Cursos),
  NIF_Alumno VARCHAR2(15) REFERENCES ALUMNOS(NIF_Alumno) CONSTRAINT RCA_NIFAlum_UQ UNIQUE,
UNIQUE KEY (Id_Curso, NIF_Alumno));

Спасибо.

1 Ответ

0 голосов
/ 30 ноября 2018

У вас есть пара небольших ошибок в окончательном определении таблицы:

CREATE TABLE REL_CURSOS_ALUMNOS (
  Id_Curso VARCHAR2(15) REFERENCES CURSOS(Id_Curso),
  NIF_Alumno VARCHAR2(15) REFERENCES ALUMNOS(NIF_Alumno) CONSTRAINT RCA_NIFAlum_UQ UNIQUE,
  UNIQUE (Id_Curso, NIF_Alumno)
);

Ваша конкретная проблема вызвана KEY.Это не требуется для определения уникального ограничения.Кроме того, для CURSOS используется ссылка id_curso, а не id_cursos.

. Я оставил оба unique определения.Но если NIF_Alumno уникален, то пара (Id_Curso, NIF_Alumno) также уникальна, так что ограничение является избыточным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...