Yo tengo entendido que cada tabla tiene que tener 1 clave primaria.
Y las claves ajenas son para relacionar las tablas.
Entonces yo que estoy estudiando esto, tengo dudas xddd..
Miren las claves primarias:
Código:
Y estas son las ajenas:ALTER TABLE alojamiento ADD CONSTRAINT alojamiento_Cod_Alojamiento_pk primary key(Cod_Alojamiento); ALTER TABLE alservicio ADD CONSTRAINT alservicio_Cod_Alojamiento_pk primary key(Cod_Alojamiento); ALTER TABLE clientes ADD CONSTRAINT clientes_Num_cliente_pk primary key(Num_cliente); ALTER TABLE contrato ADD CONSTRAINT contrato_Num_contrato_pk primary key(Num_contrato); ALTER TABLE empleados ADD CONSTRAINT empleados_Cod_Empleado_pk primary key(Cod_Empleado); ALTER TABLE transporte ADD CONSTRAINT transporte_Cod_Transporte_pk primary key(Cod_Transporte); ALTER TABLE tipotrans ADD CONSTRAINT tipotrans_Cod_Transporte_pk primary key(Cod_Transporte);
Código:
Pero me da error ORA-02270.ALTER TABLE clientes ADD CONSTRAINT clientes_Num_cliente_fk foreign key (Num_cliente) References contrato(Num_cliente); ALTER TABLE empleados ADD CONSTRAINT empleados_Cod_Empleado_fk foreign key (Cod_Empleado) References contrato(Cod_Empleado); ALTER TABLE contrato ADD CONSTRAINT contrato_Num_contrato_fk foreign key (Num_contrato) References transporte(Num_contrato); ALTER TABLE contrato ADD CONSTRAINT contrato_Num_contrato_fk foreign key (Num_contrato) References alojamiento(Num_contrato); ALTER TABLE alojamiento ADD CONSTRAINT alojamiento_Cod_Alojamiento_fk foreign key (Cod_Alojamiento) References alservicios(Cod_Alojamiento); ALTER TABLE clientes ADD CONSTRAINT clientes_Cod_Alojamiento_fk foreign key (Cod_Alojamiento) References alojamiento(Cod_Alojamiento); ALTER TABLE clientes ADD CONSTRAINT clientes_Fecha_A_Inicio_fk foreign key (Fecha_A_Inicio) References alojamiento(FechaInicio); ALTER TABLE clientes ADD CONSTRAINT clientes_Fecha_A_Fin_fk foreign key (Fecha_A_Fin) References alojamiento(FechaFin); ALTER TABLE clientes ADD CONSTRAINT clientes_Cod_Transporte_fk foreign key (Cod_Transporte) References transporte(Cod_Transporte); ALTER TABLE clientes ADD CONSTRAINT clientes_Fecha_T_Inicio_fk foreign key (Fecha_T_Inicio) References transporte(Fecha_Inicio); ALTER TABLE clientes ADD CONSTRAINT clientes_Fecha_T_Fin_fk foreign key (Fecha_T_Fin) References transporte(Fecha_Fin);
¿Todas las relaciones tienen que tener 1 clave primaria? Si es asi, ¿Las relaciones con clave primaria son 1:1? ¿Como las hago 1:N? ¿Y las N:M?
Estructura de la bd por si interesa:
Código:
Gracias, espero debate --CREATE_TABLE CREATE TABLE alojamiento ( Cod_Alojamiento decimal(10,0) NOT NULL, Num_Contrato decimal(10,0) DEFAULT NULL, FechaInicio date DEFAULT NULL, FechaFin date DEFAULT NULL, Tipo_Habitación varchar(20) DEFAULT NULL, Comida varchar(20) DEFAULT NULL); CREATE TABLE alservicio ( Cod_Alojamiento decimal(10,0) DEFAULT NULL, Tipo_Servicio varchar(20) DEFAULT NULL, Fecha_Hora_Servicio date DEFAULT NULL); CREATE TABLE clientes ( Num_cliente decimal(10,0) NOT NULL, Nombre varchar(20) DEFAULT NULL, Apellido varchar(20) DEFAULT NULL, DNI varchar(20) DEFAULT NULL, DetallesPago varchar(20) DEFAULT NULL, Cod_Alojamiento decimal(10,0) DEFAULT NULL, Fecha_A_Inicio date DEFAULT NULL, Fecha_A_Fin date DEFAULT NULL, Cod_Transporte decimal(10,0) DEFAULT NULL, Fecha_T_Inicio date DEFAULT NULL, Fecha_T_Fin date DEFAULT NULL); CREATE TABLE contrato ( Num_contrato decimal(10,0) NOT NULL, Num_cliente decimal(10,0) DEFAULT NULL, Fecha_Realización date DEFAULT NULL, Cod_Empleado decimal(10,0) DEFAULT NULL); CREATE TABLE empleados ( Cod_Empleado decimal(10,0) NOT NULL, Nombre varchar(20) DEFAULT NULL, Apellidos varchar(20) DEFAULT NULL, DNI varchar(20) DEFAULT NULL, hiredate date DEFAULT NULL, loc varchar(20) DEFAULT NULL); CREATE TABLE tipotrans ( Cod_Transporte decimal(10,0) DEFAULT NULL, Tipo varchar(20) DEFAULT NULL); CREATE TABLE transporte ( Cod_Transporte decimal(10,0) NOT NULL, Num_contrato decimal(10,0) DEFAULT NULL, Fecha_Inicio date DEFAULT NULL, Fecha_Fin date DEFAULT NULL);