CREATE TABLE PABELLON (
Codigo_pabellon INT NOT NULL,
Nombre VARCHAR(30),
Codigo_localidad INT(3),
PRIMARY KEY (Codigo_pabellon),
FOREIGN KEY (Codigo_localidad)
REFERENCES LOCALIDAD (Codigo_localidad)
);
CREATE TABLE JORNADA (
Codigo_jornada INT NOT NULL AUTO_INCREMENT,
Numero INT(2),
Codigo_Competicion INT NOT NULL,
PRIMARY KEY (Codigo_jornada)
);
CREATE TABLE EQUIPO (
NIF VARCHAR(9) NOT NULL,
Nombre VARCHAR(30),
Direccion VARCHAR(20),
Telefono VARCHAR(20),
PRIMARY KEY (NIF)
);
CREATE TABLE EQUIPO_ARBITRAL (
DNI VARCHAR(9),
Licencia INT(3),
Nombre VARCHAR(20),
Apellidos VARCHAR(20),
Email VARCHAR(20),
Telefono INT(9),
Cuenta INT(20),
Cod_localidad INT(3),
PRIMARY KEY (DNI)
);
CREATE TABLE PARTIDO (
Codigo_Partido INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
EquipoA VARCHAR(9) NOT NULL,
EquipoB VARCHAR(9) NOT NULL,
Fecha DATE,
Hora TIME,
Codigo_Pabellon INT NOT NULL,
Codigo_jornada INT,
ArbPrin VARCHAR(9),
ArbAux VARCHAR(9),
Anotador VARCHAR(9),
Crono VARCHAR(9),
Op24 VARCHAR(9),
FOREIGN KEY (EquipoA , EquipoB)
REFERENCES EQUIPO (NIF , NIF),
FOREIGN KEY (ArbPrin , ArbAux , Anotador , Crono , Op24)
REFERENCES EQUIPO_ARBITRAL (DNI , DNI , DNI , DNI , DNI),
FOREIGN KEY (Codigo_Pabellon)
REFERENCES PABELLON (Codigo_Pabellon),
FOREIGN KEY (Codigo_jornada)
REFERENCES JORNADA (Codigo_Jornada)
);
答案 0 :(得分:1)
实际上我不明白你想通过多列FK实现什么目标?
为什么要添加像
这样的FKFOREIGN KEY (EquipoA , EquipoB)
REFERENCES EQUIPO (NIF , NIF),
超过两列? 这些列彼此独立,除了它们引用相同的表。因此,您应该定义两个FK,如
FOREIGN KEY (EquipoA)
REFERENCES EQUIPO (NIF),
FOREIGN KEY (EquipoB)
REFERENCES EQUIPO (NIF)
您很可能希望在所有FK定义中相应地更改此值,这些定义多次引用引用表中的一列。