Anda di halaman 1dari 4

INS Provenana

Mdul Bases de dades

PRCTICA (DML + DDL). Definicin y modificacin de datos en SQL

Normas de entrega

1. Crear un script llamado concesionario_grupoX.sql que al ejecutarlo haga todas las prcticas en el orden que se solicitan. El script debe de estar perfectamente comentado y tabulado. 2. Un documento de texto donde aparezca cada enunciado, su respuesta y la captura de pantalla de la salida correspondiente.
Nota: puede haber alguna cosa no explicada en clase, en su caso se debe de investigar.

Enunciado del caso prctico Gestin red de Concesionarios de Coches


Se desea disear un esquema de bases de datos para la gestin de una red de concesionarios de coches de diversas marcas. La informacin que interesa recoger de cada concesionario es su nombre, direccin, telfono y fecha de inauguracin, as como el conjunto de vendedores empleados en el mismo. Cada vendedor slo puede trabajar para un concesionario y se desea conocer su nombre, telfono y, si lo tiene, quin es su jefe directo. Cada concesionario pertenece a una determinada marca de coches (Toyota, Opel, Seat, Ford, Volkswagen, Renault, etc.). De entre los concesionarios que representan a una misma marca se elige uno como concesionario principal. Cada marca comercializa sus propios modelos de coche. Cada modelo se caracteriza por un nombre y el precio de venta recomendado (pvr) por la marca para los coches de dicho modelo. Cada concesionario dispone de un catlogo en el que aparecen recogidos aquellos modelos con los que trabaja, que pueden ser todos o slo algunos de los modelos de la marca a la que pertenece. Por supuesto, diferentes concesionarios (de la misma marca) pueden trabajar con el mismo modelo de coche. Un concesionario puede tener en su exposicin varios coches disponibles para la venta. Los distintos coches de un mismo modelo se diferencian entre s por un nmero (de hasta tres cifras), e interesa conocer: su color, nmero de puertas y cilindrada. En cada operacin de venta interesa anotar qu coche concreto es vendido, el cliente que lo adquiere y el vendedor del concesionario que ha conseguido la venta. De los clientes, que pueden ser de dos tipos: particular o empresa, se desea recoger un identificador (el nif o cif), el nombre, un telfono y los 20 dgitos de su nmero de cuenta bancaria. Tambin interesa anotar la matrcula asignada al coche, que slo se conoce en el momento de su venta. Cada coche se vende una vez y, por supuesto, un mismo cliente puede comprar muchos coches, as como un vendedor puede participar en la venta de diversos coches. 1

INS Provenana

Mdul Bases de dades

Como resultado de las etapas de diseo conceptual y diseo lgico de la base de datos, se ha identificado el siguiente conjunto de tablas (en orden alfabtico):

CATALOGO ( concesionario, marca, modelo ); CLIENTE (identificador, tipo, nombre, apellido, telefono, cuenta ); COCHE ( marca, modelo, numero, color, puertas, cilindrada, matricula, concesionario ); CONCESIONARIO ( codigo, nombre, fecha_inauguracion, direccion, telefono, marca ); MARCA ( nombre, concesionario_principal ); MODELO ( marca, modelo, pvr); VENDEDOR (codigo, nombre, telefono, jefe, concesionario ); VENTA (marca, modelo, coche, cliente, vendedor, fecha, precio ); Ejercicios
Creacin del esquema de base de datos e insercin de datos 1. Creacin y carga de las tablas del esquema. Para ello se ha de seguir estos pasos: - Dibujar el modelo E-R de base de datos utilizando una notacin grfica. Se recomienda dibujar este esquema antes de intentar crear las tablas, para tener una visin clara de las relaciones existentes entre ellas (integridad referencial). - Crear las tablas (en el orden adecuado, vase nota abajo). Para ello, previamente hay que: Elegir el tipo de datos y longitud ms adecuados para las columnas de las tablas. Deducir del enunciado las restricciones de integridad y darles un nombre adecuado: Columnas que no deben permitir nulos y columnas que s pueden contener nulos. Nota: Como poltica general, ninguna columna ha de permitir nulos (NOT NULL), excepto aquellas para las que pueda deducirse del enunciado que s pueden no contener ningn valor (NULL). Claves primarias (PRIMARY KEY). Claves alternativas (UNIQUE). Claves ajenas (FOREIGN KEY). - Para cada clave ajena, elegir y justificar las acciones de mantenimiento de la integridad Referencial (ON DELETE... y ON UPDATE...) que se consideren ms apropiadas. Valores por defecto (DEFAULT). Otras restricciones (CHECK). Nota: Siempre que sea posible, el CREATE TABLE de cada tabla debe incluir (adems de las columnas, claro) sus restricciones de integridad de columna y de tabla. Slo cuando esto no sea posible, se aadirn a posteriori dichas restricciones de integridad, con ALTER TABLE.... - Insertar varias filas en cada tabla. Las inserciones hay que hacerlas en el orden adecuado de forma que no se violen las reglas de integridad referencial. Se valorar la cantidad y calidad del conjunto de filas insertadas en cada tabla. En cada INSERT debe indicarse la lista de nombres de columnas antes de la clusula VALUES. - Crear en la BD los comentarios (COMMENT) de la tabla CLIENTE. - Crear en la BD los comentarios (COMMENT) de todas las columnas de la tabla CLIENTE. - Comprobar la creacin correcta de los comentarios anteriores, mostrando por pantalla un par de SELECT sobre las vistas del diccionario de datos denominadas USER_TAB_COMMENTS y USER_COL_COMMENTS.

INS Provenana

Mdul Bases de dades

Actualizacin de datos almacenados 2. Incrementar un 5% el precio recomendado (pvr) para todos los modelos de aquellas marcas con ms de 3 modelos comercializados (ofertados, puestos a la venta). 3. Modificar (actualizar) el nombre de una marca. Dada la marca a, cambiar su nombre por un nuevo valor b inexistente hasta ese momento. Tngase en cuenta que dicha columna es la clave primaria de la tabla MARCA y es clave ajena en otras tablas. 4. Crear un nuevo concesionario como copia de otro existente. Esto es, dada la marca a, introducir en las tablas adecuadas un nuevo concesionario c (inexistente hasta este momento) como una copia del concesionario principal de la marca a. A continuacin, hacer que el nuevo concesionario c sea ahora el concesionario principal de la marca a. 5. Mostrar por pantalla la clave primaria de los coches junto con su nmero de puertas. Intercambiar el nmero de puertas de los coches, de forma que los de 5 puertas pasen a tener 3 puertas y viceversa. Volver a mostrar los datos para comprobar que se han intercambiado. Por ltimo, hacer ROLLBACK para dejar los datos como estaban al principio y comprobar que as ha sido. IMPORTANTE: En este ejercicio se supone que en el ejercicio 1 se ha definido una restriccin de
integridad (tipocheck) para que el campo puertas de la tabla COCHE slo admita los valores 3 o 5. En el caso de que no se haya creado dicha restriccin, hay que incluir la sentencia de creacin al principio de este ejercicio 5.

Eliminacin de datos almacenados 6. Indique qu sentencias SQL sera necesario realizar, dentro de una misma transaccin, para borrar todos los datos referentes a cierta marca. Intente resolver los problemas que puedan surgir con las referencias entre las tablas afectadas por la eliminacin de datos. La solucin debe ser vlida tanto si se ha vendido algn coche de un modelo de dicha marca como si no. Alteracin de la estructura del esquema de base de datos 7. Modificar la definicin de la columna que almacena el nmero de puertas de los coches, para que su valor por defecto sea 5. 8. Establecer que la columna que almacena los telfonos de los clientes debe, a partir de ahora, ser opcional, es decir, admitir NULL como valor. 9. Supuesta la existencia de una restriccin de integridad sobre la columna que almacena el tipo de cliente, que limita su valor a particular y empresa (Nota: si no existe ya, debe crearse dicha restriccin al principio de este ejercicio), alterar dicha restriccin de forma que un organismo pblico pueda registrarse como cliente, esto es, que la columna admita tambin el valor org_publ. 10.Alterar la tabla que almacena las marcas para aadir una columna num_conces. A continuacin rellenar dicha columna con el nmero actual de concesionarios que tiene cada marca. 11.Eliminar la columna num_conces de la tabla que almacena las marcas, de forma que dicha tabla quede tal y como estaba originalmente (en estructura, contenido y restricciones de integridad). 3

INS Provenana

Mdul Bases de dades

12.Crear una vista llamada VENTAS_MARCA que muestre para cada marca y modelo, cuntos coches se han vendido y la suma de sus precios de venta, por cada ao y mes. La vista, por tanto, ha de tener las columnas marca, modelo, anyo, mes, num_coches y suma_precios. A continuacin modificar la vista VENTAS_MARCA, de forma que la columna suma_precios se vea incrementada con el 16% de IVA.

Restricciones de Integridad y de Seguridad 13. Restricciones de integridad adicionales. Verifique si el esquema lgico creado permite asegurar el cumplimiento de cada la siguiente restriccin mostrada a continuacin. Si es as, indique cmo o por qu. Si no es as, escriba las sentencias SQL. Restriccin de Integridad1: Todas las marcas han de tener un concesionario principal y solamente uno. Estructuras de Acceso 14. Explica buscando informacin donde consideres qu son los ndices y cual es la sintaxis en Oracle. 15. Crear ndices que aceleren los accesos de aquellas consultas: Index1. que hagan JOIN (reunin) de las tablas CLIENTE y VENTA. Index2. que hagan JOIN de las tablas CONCESIONARIO y MARCA

Anda mungkin juga menyukai