viernes, 25 de febrero de 2011

Avance de la Base de Datos


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