Ejercicio 1 SQL Definicion Datos Solucion

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 3

Ejercicio SQL - Definición de Datos - Solución

Ejercicio 1:

Disponemos de la siguiente Base de Datos para gestionar la información de los pubs de


una determinada provincia.

PUB TITULAR EMPLEADO


#COD_PUB #DNI_TITULAR #DNI_EMPLEADO
NOMBRE NOMBRE NOMBRE
LICENCIA_FISCAL DOMICILIO DOMICILIO
DOMICILIO COD_PUB
FECHA_APERTURA
HORARIO
COD_LOCALIDAD

EXISTENCIAS LOCALIDAD PUB_EMPLEADO


#COD_ARTICULO #COD_LOCALIDAD #COD_PUB
NOMBRE NOMBRE #DNI_EMPLEADO
CANTIDAD #FUNCION
PRECIO
COD_PUB

Se pide escribir los comandos SQL que permitan la creación de las tablas anteriores
teniendo en cuenta las siguientes restricciones:

• Todos los valores son de tipo carácter excepto los campos FECHA_APERTURA
(fecha) , CANTIDAD, PRECIO y COD_LOCALIDAD (numéricos).
• Los únicos campos que no son obligatorios son los campos DOMICILIO.
• Los valores del campo horario sólo pueden ser HOR1, HOR2 y HOR3.
• No es posible dar de alta EXISTENCIAS a precio 0.
• El campo función de la tabla PUB_EMPLEADO sólo puede tener los valores
CAMARERO, SEGURIDAD, LIMPIEZA.
• Se ha de mantener la integridad referencial entre las tablas.
• Las claves primarias vienen marcadas con el símbolo #.

Ejercicio #1 SQL
Solución:

Sentencias SQL de creación de tablas:

CREATE TABLE pub (
    cod_pub         VARCHAR(5)   NOT NULL,
    nombre          VARCHAR(60)  NOT NULL,
    licencia_fiscal VARCHAR(60)  NOT NULL,
    domicilio       VARCHAR(60)         ,
    fecha_apertura  DATE         NOT NULL,
    horario         VARCHAR(60)  NOT NULL,
    cod_localidad   INTEGER      NOT NULL ) ;

CREATE TABLE titular (
    dni_titular     VARCHAR(8)   NOT NULL,
    nombre          VARCHAR(60)  NOT NULL,
    domicilio       VARCHAR(60)         ,
    cod_pub         VARCHAR(5)   NOT NULL ) ;

CREATE TABLE empleado (
    dni_empleado    VARCHAR(8)   NOT NULL,
    nombre          VARCHAR(60)  NOT NULL,
    domicilio       VARCHAR(60)          ) ;

CREATE TABLE existencias (
    cod_articulo    VARCHAR(10)  NOT NULL,
    nombre          VARCHAR(60)  NOT NULL,
    cantidad        INTEGER      NOT NULL,
    precio          DECIMAL      NOT NULL,
    cod_pub         VARCHAR(5)   NOT NULL ) ;

CREATE TABLE localidad (
    cod_localidad   INTEGER      NOT NULL,
    nombre          VARCHAR(60)  NOT NULL ) ;

CREATE TABLE pub_empleado (
    cod_pub         VARCHAR(5)   NOT NULL,
    dni_empleado    VARCHAR(8)   NOT NULL,
    funcion         VARCHAR(9)   NOT NULL ) ;

Ejercicio #1 SQL
Sentencias SQL de creación restricciones:

ALTER TABLE pub ADD CONSTRAINT pk_pub
 PRIMARY KEY (cod_pub) ;

ALTER TABLE localidad ADD CONSTRAINT pk_localidad
 PRIMARY KEY (cod_localidad) ;

ALTER TABLE titular ADD CONSTRAINT pk_titular
 PRIMARY KEY (dni_titular) ;

ALTER TABLE empleado ADD CONSTRAINT pk_empleado
 PRIMARY KEY (dni_empleado) ;

ALTER TABLE existencias ADD CONSTRAINT pk_existencias
 PRIMARY KEY (cod_articulo) ;

ALTER TABLE pub_empleado ADD CONSTRAINT pk_pub_empleado
 PRIMARY KEY (cod_pub, dni_empleado, funcion) ;

ALTER TABLE pub ADD CONSTRAINT fk_pub_localidad
 FOREIGN KEY (cod_localidad)
 REFERENCES localidad (cod_localidad) ;

ALTER TABLE titular ADD CONSTRAINT fk_titular_pu
 FOREIGN KEY (cod_pub)
 REFERENCES pub (cod_pub) ;

ALTER TABLE existencias ADD CONSTRAINT fk_existencias_pub
 FOREIGN KEY (cod_pub)
 REFERENCES pub (cod_pub) ;

ALTER TABLE pub_empleado ADD CONSTRAINT fk_pubemple_pub
 FOREIGN KEY (cod_pub)
 REFERENCES pub(cod_pub) ;

ALTER TABLE pub_empleado ADD CONSTRAINT fk_pubemple_empleado
 FOREIGN KEY (dni_empleado)
 REFERENCES empleado (dni_empleado) ;

Ejercicio #1 SQL

También podría gustarte