olimpicos/schema.sql

141 lines
5.2 KiB
SQL

CREATE TABLE medalla(
id_medalla NUMBER GENERATED ALWAYS as IDENTITY(START with 1 INCREMENT by 1),
descripcion VARCHAR2(50),
CONSTRAINT medalla_pk PRIMARY KEY (id_medalla)
);
CREATE TABLE atleta(
id_atleta NUMBER GENERATED ALWAYS as IDENTITY(START with 1 INCREMENT by 1),
nombre VARCHAR2(50),
apellido VARCHAR2(50),
fecha_nacimiento DATE,
nacionalidad VARCHAR2(50),
CONSTRAINT atleta_pk PRIMARY KEY (id_atleta)
);
CREATE TABLE tipos_deportes(
id_tipo NUMBER GENERATED ALWAYS as IDENTITY(START with 1 INCREMENT by 1),
descripcion VARCHAR(50),
CONSTRAINT tipo_pk PRIMARY KEY (id_tipo)
);
CREATE TABLE ciudad(
id_ciudad NUMBER GENERATED ALWAYS as IDENTITY(START with 1 INCREMENT by 1),
nombre VARCHAR(50),
pais NUMBER,
CONSTRAINT ciudad_pk PRIMARY KEY (id_ciudad),
CONSTRAINT ciudad_pais_fk FOREIGN KEY (pais) REFERENCES pais(id_ciudad)
);
CREATE TABLE pais(
id_pais NUMBER GENERATED ALWAYS as IDENTITY(START with 1 INCREMENT by 1),
nombre VARCHAR(50),
CONSTRAINT pais_pk PRIMARY KEY (id_pais)
);
CREATE TABLE capital(
id_pais NUMBER,
id_ciudad NUMBER,
CONSTRAINT capital_pk PRIMARY KEY (id_pais, id_ciudad),
CONSTRAINT capital_pais_fk FOREIGN KEY (id_pais) REFERENCES pais(id_pais),
CONSTRAINT capital_ciudad_fk FOREIGN KEY (id_ciudad) REFERENCES ciudad(id_ciudad)
);
CREATE TABLE hotel(
id_hotel NUMBER GENERATED ALWAYS as IDENTITY(START with 1 INCREMENT by 1),
nombre VARCHAR2(50),
ciudad NUMBER,
CONSTRAINT hotel_pk PRIMARY KEY (id_hotel),
CONSTRAINT hotel_ciudad_fk FOREIGN KEY (ciudad) REFERENCES ciudad(id_ciudad)
);
CREATE TABLE delegacion(
id_delegacion NUMBER GENERATED ALWAYS as IDENTITY(START with 1 INCREMENT by 1),
nombre VARCHAR2(50),
cantidad_atletas NUMBER,
pais NUMBER,
atleta NUMBER,
CONSTRAINT delegacion_pk PRIMARY KEY (id_delegacion),
CONSTRAINT delegacion_pais_fk FOREIGN KEY (pais) REFERENCES pais(id_pais),
CONSTRAINT delegacion_atleta_fk FOREIGN KEY (atleta) REFERENCES atleta(id_atleta)
);
CREATE TABLE categoria(
id_categoria NUMBER GENERATED ALWAYS as IDENTITY(START with 1 INCREMENT by 1),
descripcion VARCHAR(50),
CONSTRAINT categoria_pk PRIMARY KEY (id_categoria)
);
CREATE TABLE lugar(
id_lugar NUMBER GENERATED ALWAYS as IDENTITY(START with 1 INCREMENT by 1),
nombre VARCHAR2(50),
capacidad NUMBER,
ciudad NUMBER,
CONSTRAINT lugar_pk PRIMARY KEY (id_lugar),
CONSTRAINT lugar_ciudad_fk FOREIGN KEY (ciudad) REFERENCES ciudad(id_ciudad)
);
CREATE TABLE competencia(
id_competencia NUMBER GENERATED ALWAYS as IDENTITY(START with 1 INCREMENT by 1),
nombre VARCHAR2(50),
categoria NUMBER,
tipo NUMBER,
lugar NUMBER,
CONSTRAINT competencia_pk PRIMARY KEY (id_competencia),
CONSTRAINT competencia_categoria_fk FOREIGN KEY (categoria) REFERENCES categoria(id_categoria),
CONSTRAINT competencia_tipo_fk FOREIGN KEY (tipo) REFERENCES tipos_deportes(id_tipo),
CONSTRAINT competencia_lugar_fk FOREIGN KEY (lugar) REFERENCES lugar(id_lugar)
);
CREATE TABLE precompetencia(
id_precompetencia NUMBER GENERATED ALWAYS as IDENTITY(START with 1 INCREMENT by 1),
fecha DATE,
competencia NUMBER,
lugar NUMBER,
CONSTRAINT precompetencia_pk PRIMARY KEY (id_precompetencia),
CONSTRAINT precompetencia_competencia_fk FOREIGN KEY (competencia) REFERENCES competencia(id_competencia),
CONSTRAINT precompetencia_lugar_fk FOREIGN KEY (lugar) REFERENCES lugar(id_lugar)
);
CREATE TABLE hospedar(
id_hotel NUMBER,
id_delegacion NUMBER,
fecha_inicio DATE,
fecha_fin DATE,
precio NUMBER,
CONSTRAINT hospedar_pk PRIMARY KEY (id_hotel, id_delegacion),
CONSTRAINT hospedar_hotel_fk FOREIGN KEY (id_hotel) REFERENCES hotel(id_hotel),
CONSTRAINT hospedar_delegacion_fk FOREIGN KEY (id_delegacion) REFERENCES delegacion(id_delegacion)
);
CREATE TABLE ganar(
id_atleta NUMBER,
id_competencia NUMBER,
id_medalla NUMBER,
fecha DATE,
puntaje NUMBER,
CONSTRAINT ganar_pk PRIMARY KEY (id_atleta, id_competencia, id_medalla),
CONSTRAINT ganar_atleta_fk FOREIGN KEY (id_atleta) REFERENCES atleta(id_atleta),
CONSTRAINT ganar_competencia_fk FOREIGN KEY (id_competencia) REFERENCES competencia(id_competencia),
CONSTRAINT ganar_medalla_fk FOREIGN KEY (id_medalla) REFERENCES medalla(id_medalla)
);
CREATE TABLE participar_competencia(
id_competencia NUMBER,
id_atleta NUMBER,
fecha DATE,
CONSTRAINT participar_competencia_pk PRIMARY KEY (id_competencia, id_atleta),
CONSTRAINT participar_competencia_competencia_fk FOREIGN KEY (id_competencia) REFERENCES competencia(id_competencia),
CONSTRAINT participar_competencia_atleta_fk FOREIGN KEY (id_atleta) REFERENCES atleta(id_atleta)
);
CREATE TABLE participar_precompetencia(
id_precompetencia NUMBER,
id_atleta NUMBER,
puntaje NUMBER,
fecha DATE,
CONSTRAINT participar_precompetencia_pk PRIMARY KEY (id_precompetencia, id_atleta),
CONSTRAINT participar_precompetencia_precompetencia_fk FOREIGN KEY (id_precompetencia) REFERENCES precompetencia(id_precompetencia),
CONSTRAINT participar_precompetencia_atleta_fk FOREIGN KEY (id_atleta) REFERENCES atleta(id_atleta)
);