|
|
(No se muestra una edición intermedia de un usuario) |
Línea 1: |
Línea 1: |
| {{#breadcrumb: }} | | {{#breadcrumb: }} |
− | {{Please leave this line alone and write below (this is the coloured heading)}}
| |
− |
| |
− | === '''APARTADO 5: Analiza la calidad de tu Base de Datos (OPCIONAL)''' ===
| |
− |
| |
− | '''Para cada tabla determina: (antes, necesitas definir qué claves Primarias y Ajenas tiene):'''
| |
− |
| |
− | CREATE TABLE '''Autor'''(
| |
− | <br />
| |
− | Id CHAR(50) not null,
| |
− | <br />
| |
− | Apellidos CHAR(50) not null,
| |
− | <br />
| |
− | Nombre CHAR(50) not null,
| |
− | <br />
| |
− | SegundoNombre CHAR(50),
| |
− | <br />
| |
− | PRIMARY KEY (Id)
| |
− | <br />
| |
− | );
| |
− |
| |
− | CREATE TABLE '''Libro''' (
| |
− | <br />
| |
− | ISBN CHAR (50) not null,
| |
− | <br />
| |
− | Titulo CHAR (50) not null,
| |
− | <br />
| |
− | AÒoDePublicacion INTEGER not null,
| |
− | <br />
| |
− | Editorial CHAR(50) not null,
| |
− | <br />
| |
− | PRIMARY KEY (ISBN)
| |
− | <br />
| |
− | );
| |
− |
| |
− | CREATE TABLE '''EsAutorDe'''(
| |
− | <br />
| |
− | Autor CHAR (50) not null,
| |
− | <br />
| |
− | Libro CHAR(50) not null,
| |
− | <br />
| |
− | PosicionEnPortada INTEGER not null,
| |
− | <br />
| |
− | PRIMARY KEY (Autor, Libro),
| |
− | <br />
| |
− | FOREIGN KEY (Libro) REFERENCES Libro (ISBN),
| |
− | <br />
| |
− | FOREIGN KEY (Autor) REFERENCES Autor (Id)
| |
− | <br />
| |
− | );
| |
− |
| |
− | CREATE TABLE '''Materias'''(
| |
− | <br />
| |
− | Libro CHAR(50) not null,
| |
− | <br />
| |
− | Nombre CHAR(50) not null,
| |
− | <br />
| |
− | PRIMARY KEY (Libro, Nombre),
| |
− | <br />
| |
− | FOREIGN KEY (Libro) REFERENCES Libro (ISBN)
| |
− | <br />
| |
− | );
| |
− |
| |
− | CREATE TABLE '''Copia'''(
| |
− | <br />
| |
− | Libro CHAR(50) not null,
| |
− | <br />
| |
− | NumeroDeCopia INTEGER not null,
| |
− | <br />
| |
− | Disponible CHAR(1) not null,
| |
− | <br />
| |
− | CHECK(Disponible IN ('S','N')),
| |
− | <br />
| |
− | PRIMARY KEY (Libro,NumeroDeCopia),
| |
− | <br />
| |
− | FOREIGN KEY (Libro) REFERENCES Libro (ISBN)
| |
− | <br />
| |
− | );
| |
− |
| |
− | CREATE TABLE '''Ubicacion'''(
| |
− | <br />
| |
− | NumeroDeCentro INTEGER not null,
| |
− | <br />
| |
− | Telefono varchar(12) unique,
| |
− | <br />
| |
− | Direccion_Calle CHAR(50) not null,
| |
− | <br />
| |
− | Direccion_Numero INTEGER not null,
| |
− | <br />
| |
− | PRIMARY KEY (NumeroDeCentro)
| |
− | <br />
| |
− | );
| |
− |
| |
− | CREATE TABLE '''Signatura'''(
| |
− | <br />
| |
− | Ubicacion INTEGER not null,
| |
− | <br />
| |
− | Copia INTEGER not null,
| |
− | <br />
| |
− | Libro CHAR(50) not null,
| |
− | <br />
| |
− | CodigoDeLocalizacion CHAR (20) not null,
| |
− | <br />
| |
− | PRIMARY KEY (Copia, Libro),
| |
− | <br />
| |
− | FOREIGN KEY (Libro, Copia) REFERENCES Copia (Libro, NumeroDeCopia),
| |
− | <br />
| |
− | FOREIGN KEY (Ubicacion) REFERENCES Ubicacion (NumeroDeCentro)
| |
− | <br />
| |
− | );
| |
− |
| |
− | CREATE TABLE '''Usuario''' (
| |
− | <br />
| |
− | DNI CHAR(9) not null,
| |
− | <br />
| |
− | Nombre CHAR(50) not null,
| |
− | <br />
| |
− | Apellidos CHAR(50) not null,
| |
− | <br />
| |
− | PRIMARY KEY (DNI)
| |
− | <br />
| |
− | );
| |
− |
| |
− | CREATE TABLE '''Bibliotecario'''(
| |
− | <br />
| |
− | DNI CHAR(9) not null,
| |
− | <br />
| |
− | NumeroDePersonal INTEGER UNIQUE not null,
| |
− | <br />
| |
− | Ubicacion INTEGER not null,
| |
− | <br />
| |
− | PRIMARY KEY (DNI),
| |
− | <br />
| |
− | FOREIGN KEY (DNI) REFERENCES Usuario (DNI),
| |
− | <br />
| |
− | FOREIGN KEY (Ubicacion) REFERENCES Ubicacion (NumeroDeCentro)
| |
− | <br />
| |
− | );
| |
− |
| |
− | CREATE TABLE '''Estudiante'''(
| |
− | <br />
| |
− | DNI CHAR(9) not null,
| |
− | <br />
| |
− | CodigoDeExpediente CHAR(50) UNIQUE not null,
| |
− | <br />
| |
− | PRIMARY KEY (DNI),
| |
− | <br />
| |
− | FOREIGN KEY (DNI) REFERENCES Usuario (DNI)
| |
− | <br />
| |
− | );
| |
− |
| |
− | CREATE TABLE '''Profesores'''(
| |
− | <br />
| |
− | Ubicacion INTEGER not null,
| |
− | <br />
| |
− | DNI char(9) not null,
| |
− | <br />
| |
− | Direccion_Calle char(50) not null,
| |
− | <br />
| |
− | Direccion_Numero Integer not null,
| |
− | <br />
| |
− | Telefono varchar(12) not null,
| |
− | <br />
| |
− | PRIMARY KEY (DNI),
| |
− | <br />
| |
− | FOREIGN KEY (DNI) REFERENCES Usuario (DNI),
| |
− | <br />
| |
− | FOREIGN KEY (Ubicacion) REFERENCES Ubicacion (NumeroDeCentro)
| |
− | <br />
| |
− | );
| |
− |
| |
− | CREATE TABLE '''Multa'''(
| |
− | <br />
| |
− | DNI CHAR(9) not null,
| |
− | <br />
| |
− | FechaDeMulta TIMESTAMP not null,
| |
− | <br />
| |
− | DiasDeSancion INTEGER not null,
| |
− | <br />
| |
− | PRIMARY KEY (DNI, FechaDeMulta),
| |
− | <br />
| |
− | FOREIGN KEY (DNI) REFERENCES Usuario (DNI)
| |
− | <br />
| |
− | );
| |
− |
| |
− | CREATE TABLE '''Prestamo'''(
| |
− | <br />
| |
− | Libro CHAR(50) not null,
| |
− | <br />
| |
− | Copia INTEGER not null,
| |
− | <br />
| |
− | FechaInicial TIMESTAMP not null,
| |
− | <br />
| |
− | FechaMaxima TIMESTAMP not null,
| |
− | <br />
| |
− | FechaDevolucion TIMESTAMP,
| |
− | <br />
| |
− | Usuario CHAR (9) not null,
| |
− | <br />
| |
− | UsuarioMultado CHAR (9) null,
| |
− | <br />
| |
− | FechaDeMulta TIMESTAMP null,
| |
− | <br />
| |
− | PRIMARY KEY (Usuario, Libro, Copia, FechaInicial),
| |
− | <br />
| |
− | FOREIGN KEY (Usuario) REFERENCES Usuario (DNI),
| |
− | <br />
| |
− | FOREIGN KEY (UsuarioMultado, FechaDeMulta) REFERENCES Multa (DNI, FechaDeMulta),
| |
− | <br />
| |
− | FOREIGN KEY (Libro, Copia) REFERENCES Copia (Libro, NumeroDeCopia)
| |
− | <br />
| |
− | );
| |
− |
| |
− | ==== '''5.1 En qué FN está? // 5.2 Es una calidad aceptable? // 5.3 Si no lo es: Vas a descomponer la tabla para que quede en una calidad adecuada.''' ====
| |
− |
| |
− | '''AUTOR''': 3º FN. Si es una calidad aceptable porque esta en tercera forma normal, ya que todos
| |
− | los atributos dependen de la clave primaria (Id).
| |
− | <br />
| |
− |
| |
− | '''BIBLIOTECARIO''': 3º FN. Si es una calidad aceptable porque esta en tercera forma normal, ya
| |
− | que todos los atributos depende de la clave primaria (DNI).
| |
− | <br />
| |
− |
| |
− | '''COPIA''': 3º FN. Si es una calidad aceptable porque esta en tercera forma normal, ya que todos los
| |
− | atributos dependen de las claves primarias (Libro, NumeroDeCopias).
| |
− | <br />
| |
− |
| |
− | '''ESAUTORDE''': 3º FN. Si es una calidad aceptable porque esta en tercera forma normal, ya que
| |
− | todos los atributos dependen de las claves primarias (Autor, Libro).
| |
− | <br />
| |
− |
| |
− | '''ESTUDIANTE''': 3º FN. Si es una calidad aceptable porque esta en tercera forma normal, ya que
| |
− | todos los atributos dependen de la clave primaria (DNI).
| |
− | <br />
| |
− |
| |
− | '''LIBRO''': 3º FN. Si es una calidad aceptable porque esta en tercera forma normal, ya que todos los
| |
− | atributos dependen de la clave primaria (ISBN).
| |
− | <br />
| |
− |
| |
− | '''MATERIAS''': 3º FN. Si es una calidad aceptable porque esta en tercera forma normal, ya que
| |
− | todos los atributos dependen de las claves primarias (Libro, Nombre).
| |
− | <br />
| |
− |
| |
− | '''MULTA''': 3º FN. Si es una calidad aceptable porque esta en tercera forma normal, ya que todos los
| |
− | atributos dependen de las claves primarias (DNI, FechaDeMulta).
| |
− | <br />
| |
− |
| |
− | '''PRESTAMO''': En esta tabla aparecen varios atributos que son redundantes. El primero es
| |
− | FechaDeMulta porque se puede conseguir este atributo mediante la FechaMaxima y la
| |
− | FechaDevolucion, por lo que es un atributo innecesario, ademas no dependeria de todas las
| |
− | claves por lo que podemos eliminarlo y crear un nuevo atributo en la tabla USUARIO que seria
| |
− | NumeroDeDiasMultados con el que podremos saber el numero de dias que ese usuario tiene
| |
− | multa. Pasa lo mismo con el atributo UsuarioMultado que podríamos sacar ese atributo con los
| |
− | atributos FechaMaxima y FechaDevolucion por lo que igual que antes es un atributo que no
| |
− | necesitamos en esta tabla por lo que para saber si un Usuario esta multado o no, podemos crear
| |
− | en la tabla USUARIO un atributo que sea Multado en el que te indicara si ese usuario esta
| |
− | multado. Con la creacion de estos dos atributos la tabla USUARIO seguiría estando en 3ºFN
| |
− | porque los dos atributos dependeran de la clave DNI. Con los demás atributos la tabla estaria en
| |
− | 1ºFN porque existen atributos que no dependen de todas las claves por lo que para pasarlo a 2ºFN.
| |
− | Crearíamos una nueva tabla con los atributos FechaMaxima, FechaInicial, Copia y Libro siendo la
| |
− | clave primaria de esta una clave compuesta de FechaInicial, Copia y Libro. También creamos una
| |
− | tabla con los atributos FechaDeDevolucion, Usuario, Libro, Copia siendo la clave primaria de esta
| |
− | la clave compuesta de Usario, Libro, Copia. Ahora en la tabla original quedaria Libro, Copia, FechaInicial
| |
− | y Usuario conservando su clave. De esta manera conseguimos poner la tabla en 2º y a su vez en 3ºFN porque
| |
− | no existen dependencias transitivas.
| |
− | <br />
| |
− |
| |
− | '''PROFESORES''': 3º FN. Si es una calidad aceptable porque esta en tercera forma normal.
| |
− | Suponiendo un mismo profesor solo puede trabajar en un centro, por lo que en ese caso todos los
| |
− | atributos depende de la clave primaria (DNI).
| |
− | <br />
| |
− |
| |
− | '''SIGNATURA''': 2º FN. No es una calidad aceptable ya que esta en segunda forma normal y existen
| |
− | atributos que depende transitivamente de las claves, por lo que para arreglarlo creariamos otra
| |
− | tabla con atribtutos Ubicacion, CodigoDeLocalizacion siendo la clave primaria de esta Ubicacion.
| |
− | La tabla SIGNATURA ahora solo tendria los atributos Ubacacion, Copia y Libro siendo una clave
| |
− | compuesta Copia y Libro como antes, convirtiendo así la tabla en 3º FN ya que no existen
| |
− | dependencias transitivas.
| |
− | <br />
| |
− |
| |
− | '''UBICACION''': 3º FN. Si es una calidad aceptable porque esta en tercera forma normal, ya que
| |
− | todos los atributos dependen de la clave primaria (NumeroDeCentro).
| |
− | <br />
| |
− |
| |
− | '''USUARIO''': 3º FN. Si es una calidad aceptable porque esta en tercera forma normal, ya que todos
| |
− | los atributos dependen de la clave primaria (DNI).
| |
− | <br />
| |
− |
| |
− | --[[Usuario:Kevin|Kevin]] ([[Usuario discusión:Kevin|discusión]]) 21:11 22 mar 2015 (CET)
| |