Header

domingo, 10 de junio de 2007

Implemantación en PostgreSQL: Dominios y Tablas

Ha llegado el momento de empezar a introducir datos en la base y como era de esperar son un montón. Así que, con mucha calma y algo de paciencia, aquí están todos los datos que he metido por ahora en la BDr de F1.

No obstante empiezo con el código de los dominios que utilizaré y las tablas necesarias para el correcto funcionamiento de la BD.


DLL. Definición de Dominios.

CREATE DOMAIN tipo_piloto AS VARCHAR(1)

CHECK (VALUE IN ('O','P','R'));

CREATE DOMAIN esp_circuito AS VARCHAR(8)

CHECK (VALUE IN ('bajo','medio','alto', 'muy alto','maximo', 'extremo', 'unknown')

);

DLL. Definición de Tablas.

CREATE TABLE pilotos (

nombre VARCHAR(15),

apellido VARCHAR(15),

nacimiento DATE,

pais VARCHAR(15),

ciudad VARCHAR(25),

peso INT,

altura NUMERIC,

debut VARCHAR(20),

estatus tipo_piloto,

retiro DATE,

foto VARCHAR(500) UNIQUE,

casco VARCHAR(500) UNIQUE,

CONSTRAINT cp_pilotos PRIMARY KEY (nombre,apellido)

);

CREATE TABLE escuderias (

esc_nombre VARCHAR (25),

creacion VARCHAR(4),

web VARCHAR (500) UNIQUE,

logo VARCHAR (500) UNIQUE,

CONSTRAINT cp_escuderias PRIMARY KEY (esc_nombre)

);

CREATE TABLE monoplazas (

mono_nombre VARCHAR (15),

temporada VARCHAR (5),

esc_nombre VARCHAR (25),

motor VARCHAR (30),

cilindrada VARCHAR (15),

potencia NUMERIC (4),

chasis VARCHAR (300),

suspension VARCHAR (300),

amortiguacion VARCHAR (30),

transmision VARCHAR (50),

electronica VARCHAR (20),

ruedas VARCHAR (7),

frenos VARCHAR (50),

lubricante VARCHAR (15),

combustible VARCHAR (30),

longitud NUMERIC (5,1),

altura NUMERIC (5,1),

ancho NUMERIC (5,1),

peso NUMERIC (5,1),

via_trasera NUMERIC (5,1),

batalla NUMERIC (5,1),

foto VARCHAR(500) UNIQUE,

CONSTRAINT cp_monoplazas PRIMARY KEY (mono_nombre,temporada),

CONSTRAINT ce_monoplazas FOREIGN KEY (esc_nombre) REFERENCES escuderias (esc_nombre)

);

CREATE TABLE patrocinadores (

patro_nombre VARCHAR (30),

web VARCHAR (500) UNIQUE,

logo VARCHAR (500) UNIQUE,

CONSTRAINT cp_patrocinadores PRIMARY KEY (patro_nombre)

);

CREATE TABLE mundiales (

temporada VARCHAR (5),

N_GPs INT,

CONSTRAINT cp_mundiales PRIMARY KEY (temporada)

);

CREATE TABLE circuitos (

cir_nombre VARCHAR (25),

pais VARCHAR (25),

inauguracion NUMERIC (4),

aforo INT,

direccion VARCHAR (500),

web VARCHAR (500),

CONSTRAINT cp_circuitos PRIMARY KEY (cir_nombre)

);

CREATE TABLE GPs (

gp_nombre VARCHAR (25),

fecha_mundial DATE,

cir_nombre VARCHAR (25),

temporada VARCHAR (5),

CONSTRAINT cp_GPs PRIMARY KEY (gp_nombre, fecha_mundial),

CONSTRAINT ce_GPs FOREIGN KEY (cir_nombre) REFERENCES circuitos (cir_nombre)

);

CREATE TABLE trazado (

cir_nombre VARCHAR (25),

temporada VARCHAR (5),

n_vueltas NUMERIC (2),

longitud NUMERIC (4),

n_curvas NUMERIC (2),

carga_aerodinamica esp_circuito DEFAULT 'unknown',

desgaste_frenos esp_circuito DEFAULT 'unknown',

desgaste_neumaticos esp_circuito DEFAULT 'unknown',

agarre esp_circuito DEFAULT 'unknown',

consumo NUMERIC (2,1) DEFAULT '0',

n_cambios_marcha INT DEFAULT '0',

aceleracion_max INT DEFAULT '0',

max_tramo_aceleracion VARCHAR (8) DEFAULT 'unknown',

velocidad_max NUMERIC (4,1) DEFAULT '0',

foto VARCHAR (500),

CONSTRAINT cp_trazado PRIMARY KEY (cir_nombre, temporada)

);

CREATE TABLE curvas (

n_curva INT,

cir_nombre VARCHAR (25),

temporada VARCHAR (5),

nombre_propio VARCHAR (50) DEFAULT 'no tiene',

velocidad NUMERIC (3),

fuerza_G NUMERIC (2,1),

marcha NUMERIC (1),

CONSTRAINT cp_cuvas PRIMARY KEY (n_curva, cir_nombre,temporada)

);

CREATE TABLE I_TIENEN_2 (

esc_nombre VARCHAR (25),

pil_nombre VARCHAR (15),

pil_apellido VARCHAR (20),

temporada VARCHAR (5),

CONSTRAINT cp_I_TIENEN_2 PRIMARY KEY (esc_nombre, pil_nombre,pil_apellido)

);

CREATE TABLE I_TIENEN_3 (

esc_nombre VARCHAR (25),

patro_nombre VARCHAR (30),

temporada VARCHAR (5),

CONSTRAINT cp_I_TIENEN_3 PRIMARY KEY (esc_nombre, patro_nombre)

);

CREATE TABLE I_PARTICIPAN (

pil_nombre VARCHAR (15),

pil_apellido VARCHAR (20),

temporada VARCHAR (5),

CONSTRAINT cp_I_PARTICIPAN PRIMARY KEY (pil_nombre,pil_apellido, temporada)

);

CREATE TABLE I_POSICION (

pil_nombre VARCHAR (15),

pil_apellido VARCHAR (20),

gp_nombre VARCHAR (25),

fecha_mundial DATE,

parrilla INT,

llegada INT,

VR TIME,

CONSTRAINT cp_I_POSICION PRIMARY KEY (pil_nombre,pil_apellido, gp_nombre, fecha_mundial)

);

CREATE TABLE I_TIENEN_4 (

temporada VARCHAR (5),

gp_nombre VARCHAR (25),

fecha_mundial DATE,

CONSTRAINT cp_I_TIENEN_4 PRIMARY KEY (temporada, gp_nombre, fecha_mundial)

);

0 comentarios: