New question

Question:

Date: 29-11-2015 11:16:23 (In Spanish)

Criticas y recomendaciones para este diseño de BD para un registro de partidas de nacimientos!!![Resolved]

Buenas tardes Miembros del grupo por aqui paso para ver si alguien puede darme sus criticas en este diseño de bases de datos que estoy haciendo. es una diagrama relacional con las relaciones entre tablas. si alguien puede colaborarme con esto. adjunto codigo de la base de datos.

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,ALLOW_INVALID_DATES';

-- -----------------------------------------------------
-- Schema modelo_bd_serci
-- -----------------------------------------------------

-- -----------------------------------------------------
-- Schema modelo_bd_serci
-- -----------------------------------------------------
CREATE SCHEMA IF NOT EXISTS `modelo_bd_serci` DEFAULT CHARACTER SET utf8 ;
USE `modelo_bd_serci` ;

-- -----------------------------------------------------
-- Table `modelo_bd_serci`.`hospital`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `modelo_bd_serci`.`hospital` (
`IDhospital` INT(11) NOT NULL,
`nombre_hospital` VARCHAR(45) NOT NULL,
`domicilio_hosp` VARCHAR(45) NOT NULL,
`IDpartida_nac` INT(11) NULL,
PRIMARY KEY (`IDhospital`))
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `modelo_bd_serci`.`ubicacion_geo`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `modelo_bd_serci`.`ubicacion_geo` (
`IDubicacion_geo` INT(11) NOT NULL,
`ciudad` VARCHAR(45) NOT NULL,
`estado` VARCHAR(45) NOT NULL,
`municipio` VARCHAR(45) NOT NULL,
`IDpartida_nac` INT(11) NOT NULL,
PRIMARY KEY (`IDubicacion_geo`))
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `modelo_bd_serci`.`autoridad_civ`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `modelo_bd_serci`.`autoridad_civ` (
`IDautoridad_civ` INT(11) NOT NULL,
`nombres` VARCHAR(45) NOT NULL,
`apellidos` VARCHAR(45) NOT NULL,
`ced_autoridad` INT(11) NOT NULL,
`IDpartida_nac` INT(11) NOT NULL,
PRIMARY KEY (`IDautoridad_civ`),
UNIQUE INDEX `ced_autoridad_UNIQUE` (`ced_autoridad` ASC))
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `modelo_bd_serci`.`partida_nac`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `modelo_bd_serci`.`partida_nac` (
`IDpartida_nac` INT(11) NOT NULL AUTO_INCREMENT,
`ano` VARCHAR(45) NOT NULL,
`num_acta` INT NOT NULL,
`fecha_nac` DATE NOT NULL,
`fecha_registro_partnac` DATE NOT NULL,
`nombres` VARCHAR(45) NOT NULL,
`apellidos` VARCHAR(45) NOT NULL,
`genero` VARCHAR(45) NOT NULL,
`hora_nacimiento` VARCHAR(45) NOT NULL,
`legitimo` VARCHAR(45) NOT NULL,
`IDhospital` INT(11) NOT NULL,
`IDubicacion_geo` INT(11) NOT NULL,
`IDautoridad_civ` INT(11) NOT NULL,
PRIMARY KEY (`IDpartida_nac`),
INDEX `fk_partida_nac_hospital_idx` (`IDhospital` ASC),
INDEX `fk_partida_nac_ubicacion_geo1_idx` (`IDubicacion_geo` ASC),
INDEX `fk_partida_nac_autoridad_civ1_idx` (`IDautoridad_civ` ASC),
UNIQUE INDEX `num_acta_UNIQUE` (`num_acta` ASC),
CONSTRAINT `fk_partida_nac_hospital`
FOREIGN KEY (`IDhospital`)
REFERENCES `modelo_bd_serci`.`hospital` (`IDhospital`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_partida_nac_ubicacion_geo1`
FOREIGN KEY (`IDubicacion_geo`)
REFERENCES `modelo_bd_serci`.`ubicacion_geo` (`IDubicacion_geo`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_partida_nac_autoridad_civ1`
FOREIGN KEY (`IDautoridad_civ`)
REFERENCES `modelo_bd_serci`.`autoridad_civ` (`IDautoridad_civ`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `modelo_bd_serci`.`apoderado`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `modelo_bd_serci`.`apoderado` (
`IDapoderado` INT(11) NOT NULL AUTO_INCREMENT,
`parentesco` VARCHAR(45) NOT NULL,
`nombres` VARCHAR(45) NOT NULL,
`apellidos` VARCHAR(45) NOT NULL,
`edad` INT NOT NULL,
`estado_civ` VARCHAR(45) NOT NULL,
`nacionalidad` VARCHAR(45) NOT NULL,
`profesion` VARCHAR(45) NOT NULL,
`cedula_identidad` INT(11) NOT NULL,
`domicilio` VARCHAR(100) NOT NULL,
`lugar_nac` VARCHAR(45) NOT NULL,
`quien_representa` VARCHAR(45) NOT NULL,
`IDpartida_nac` INT(11) NOT NULL,
PRIMARY KEY (`IDapoderado`),
INDEX `fk_apoderado_partida_nac1_idx` (`IDpartida_nac` ASC),
UNIQUE INDEX `cedula_identidad_UNIQUE` (`cedula_identidad` ASC),
CONSTRAINT `fk_apoderado_partida_nac1`
FOREIGN KEY (`IDpartida_nac`)
REFERENCES `modelo_bd_serci`.`partida_nac` (`IDpartida_nac`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `modelo_bd_serci`.`testigo`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `modelo_bd_serci`.`testigo` (
`IDtestigo` INT(11) NOT NULL AUTO_INCREMENT,
`nombres` VARCHAR(45) NOT NULL,
`apellidos` VARCHAR(45) NOT NULL,
`ced_testigo` INT(11) NOT NULL,
`domicilio` VARCHAR(100) NOT NULL,
`IDpartida_nac` INT(11) NOT NULL,
PRIMARY KEY (`IDtestigo`),
INDEX `fk_testigo_partida_nac1_idx` (`IDpartida_nac` ASC),
CONSTRAINT `fk_testigo_partida_nac1`
FOREIGN KEY (`IDpartida_nac`)
REFERENCES `modelo_bd_serci`.`partida_nac` (`IDpartida_nac`)
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;
Tags: Database - MySQL - Opinion - PostgreSQL - Suggestion Votes: 3 - Answers: 5 - Views: 16 Share on: Google Facebook Twitter LinkedIn Link
 

Answers:

  • Date: 29-11-2015 14:51:48 Hola Reimer, podrás publicar un modelo DER de tu base de datos (a fin de aumentar la legibilidad), puedes enlazar una imágen con la etiqueta BBCode "Img".

    Por otro lado, siempre que publiques código en tus preguntas/respuestas utiliza las etiquetas de BBCode que estan debajo, por ejemplo "Code PHP" (por ahora no tenemos la etiqueta "Code SQL" disponible).

    Para irte dando un feedback, fijate que tenes nombre de columnas abreviada y otras que no, por ejemplo: "nombre_hospital" y "domicilio_hosp". Tampoco es aconsejable utilizar mayuscuals, por ejemplo "IDpartida_nac".

    Saludos,
      Votes: 2 - Link answer
     
  • Date: 29-11-2015 16:40:28 gracias amigo por tus recomendaciones sin embargo alli te anexo una imagen del modelo relacional por favor si puedes chequearlo y darme tus observaciones gracias y saludos!!!
    Imagen
      Votes: 0 - Link answer
     
  • Date: 29-11-2015 16:46:26 Espero que alguien alguien del grupo pueda orientarme en esta base de datos, cualquier critica constructiva sera bien recibida gracias de antemano!   Votes: 0 - Link answer
     
  • Date: 30-11-2015 09:04:38 Totalmente de acuerdo con Fernando
    expedicion_partida y hospital están huérfanos... si son innecesarias sería bueno que las borres
    Pareciera que ubicación_geo es un catálogo, en tu convención de nombres podrías indicarlo en el nombre de la tabla como:
    cat_ubicacion_geografica
    Tus ídices se ven bien. Cuando empieces a utilizar las tablas y hagas tus consultas recuerda agregar los que sean necesarios.
      Votes: 2 - Link answer
     
  • Date: 30-11-2015 09:41:03 Buenas tardes Ernesto gracias por tus observaciones a un asi te informo que todavia me hace falta hacer la relacion de hospital con partida_nac ya que el acta de nacimiento debe figurar el nombre del hospital donde nacio el niño , y ps la tabla ubicacion geografica la estoy utilizando para almacenar la localizacion de donde se esta haciendo el acta. no se si me puedas dar mas sugerencias gracias de antemano.   Votes: 0 - Link answer
     
To actively participate in the community first must authenticate, enter the system.Sign In
 
frjcbbae garagebible.com