A continuación un pequeño avance del diseño de una base de datos de un videoclub, esto tiene como fin estudiar los diagramas entidad-relación, los grafos relacionales y el código en SQL.
Diagrama Entidad - Relación
Grafo Relacional
Boceto de la base de datos en SQL
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL';
CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci ;
USE `mydb` ;
-- -----------------------------------------------------
-- Table `mydb`.`Pelicula`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Pelicula` (
`id_pelicula` INT NOT NULL ,
`titulo` VARCHAR(45) NOT NULL ,
`nacionalidad` VARCHAR(45) NOT NULL ,
`productora` VARCHAR(45) NOT NULL ,
`año` YEAR NOT NULL ,
`genero` VARCHAR(45) NOT NULL ,
`nombre_director` VARCHAR(45) NOT NULL ,
`nombre_actor` VARCHAR(45) NOT NULL ,
PRIMARY KEY (`id_pelicula`, `nombre_director`, `nombre_actor`) )
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`Ejemplar`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Ejemplar` (
`ISBN` INT NOT NULL ,
`numero_ejemplar` VARCHAR(45) NOT NULL ,
`estado_conservacion` VARCHAR(45) NOT NULL ,
`id_pelicula` VARCHAR(45) NOT NULL ,
PRIMARY KEY (`ISBN`, `id_pelicula`) ,
INDEX `id_pelicula` (`ISBN` ASC) ,
CONSTRAINT `id_pelicula`
FOREIGN KEY (`ISBN` )
REFERENCES `mydb`.`Pelicula` (`id_pelicula` )
ON DELETE SET NULL
ON UPDATE SET NULL)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`Cliente`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Cliente` (
`curp` INT NOT NULL ,
`nombre` VARCHAR(45) NOT NULL ,
`sexo` VARCHAR(20) NOT NULL ,
`adeudos` VARCHAR(45) NOT NULL ,
`edad` VARCHAR(45) NOT NULL ,
`telefono` INT NOT NULL ,
`direccion` VARCHAR(60) NOT NULL ,
PRIMARY KEY (`curp`) )
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`Prestamo`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Prestamo` (
`id_pelicula` INT NOT NULL ,
`numero_ejemplar` VARCHAR(45) NOT NULL ,
`existencia` INT NOT NULL ,
`multa` VARCHAR(45) NOT NULL ,
`fecha_entrega` VARCHAR(45) NOT NULL ,
`fecha_devolucion` VARCHAR(45) NOT NULL ,
`curp` INT NOT NULL ,
PRIMARY KEY (`id_pelicula`, `curp`) ,
INDEX `id_pelicula` (`id_pelicula` ASC) ,
INDEX `numero_ejemplar` (`numero_ejemplar` ASC) ,
INDEX `curp` (`curp` ASC) ,
CONSTRAINT `id_pelicula`
FOREIGN KEY (`id_pelicula` )
REFERENCES `mydb`.`Pelicula` (`id_pelicula` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `numero_ejemplar`
FOREIGN KEY (`numero_ejemplar` )
REFERENCES `mydb`.`Ejemplar` (`id_pelicula` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `curp`
FOREIGN KEY (`curp` )
REFERENCES `mydb`.`Cliente` (`curp` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`Director`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Director` (
`nombre_director` VARCHAR(45) NOT NULL ,
`nacionalidad` VARCHAR(45) NOT NULL ,
`sexo` VARCHAR(20) NOT NULL ,
PRIMARY KEY (`nombre_director`) ,
INDEX `nombre_director` (`nombre_director` ASC) ,
CONSTRAINT `nombre_director`
FOREIGN KEY (`nombre_director` )
REFERENCES `mydb`.`Pelicula` (`nombre_director` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`Actor Principal`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Actor Principal` (
`nombre_actor` VARCHAR(45) NOT NULL ,
`nacionalidad_actor` VARCHAR(45) NOT NULL ,
`sexo_actor` VARCHAR(45) NOT NULL ,
PRIMARY KEY (`nombre_actor`) ,
INDEX `nombre_actor` (`nombre_actor` ASC) ,
CONSTRAINT `nombre_actor`
FOREIGN KEY (`nombre_actor` )
REFERENCES `mydb`.`Pelicula` (`nombre_actor` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
Nota importante:
Para el diseño de esta base de datos, se hizo uso de la herramienta workbench,
si deseas adquirirla haz click aqui.
No hay comentarios:
Publicar un comentario