Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/12/2014, 01:34
gralf
 
Fecha de Ingreso: noviembre-2014
Mensajes: 76
Antigüedad: 10 años, 1 mes
Puntos: 0
no se como restringir entrada de datos

tengo este esquema

Código MySQL:
Ver original
  1. SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
  2. SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
  3. SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';
  4.  
  5. CREATE SCHEMA IF NOT EXISTS `stocklentesbrujuleando` DEFAULT CHARACTER SET utf8 ;
  6. USE `stocklentesbrujuleando` ;
  7.  
  8. -- -----------------------------------------------------
  9. -- Table `stocklentesbrujuleando`.`cilindro`
  10. -- -----------------------------------------------------
  11. CREATE  TABLE IF NOT EXISTS `stocklentesbrujuleando`.`cilindro` (
  12.   `ID_cil` INT(2) NOT NULL AUTO_INCREMENT ,
  13.   `cilindro` DECIMAL(5,2) NOT NULL ,
  14.   PRIMARY KEY (`ID_cil`) )
  15. DEFAULT CHARACTER SET = utf8;
  16.  
  17.  
  18. -- -----------------------------------------------------
  19. -- Table `stocklentesbrujuleando`.`esfera`
  20. -- -----------------------------------------------------
  21. CREATE  TABLE IF NOT EXISTS `stocklentesbrujuleando`.`esfera` (
  22.   `ID_esf` INT(5) NOT NULL AUTO_INCREMENT ,
  23.   `esfera` DECIMAL(5,2) NOT NULL ,
  24.   PRIMARY KEY (`ID_esf`) )
  25. DEFAULT CHARACTER SET = utf8;
  26.  
  27.  
  28. -- -----------------------------------------------------
  29. -- Table `stocklentesbrujuleando`.`lentes`
  30. -- -----------------------------------------------------
  31. CREATE  TABLE IF NOT EXISTS `stocklentesbrujuleando`.`lentes` (
  32.   `ID_lente` INT(2) NOT NULL AUTO_INCREMENT ,
  33.   `lente` VARCHAR(25) NOT NULL ,
  34.   `desc` VARCHAR(45) NOT NULL ,
  35.   `Abbe` INT(2) NOT NULL ,
  36.   `densidad` VARCHAR(15) NOT NULL ,
  37.   `geometría` VARCHAR(15) NOT NULL ,
  38.   PRIMARY KEY (`ID_lente`) ,
  39.   UNIQUE INDEX `tipo` (`lente` ASC) )
  40. DEFAULT CHARACTER SET = utf8;
  41.  
  42.  
  43. -- -----------------------------------------------------
  44. -- Table `stocklentesbrujuleando`.`rx`
  45. -- -----------------------------------------------------
  46. CREATE  TABLE IF NOT EXISTS `stocklentesbrujuleando`.`rx` (
  47.   `Id_Rx` INT(2) NOT NULL DEFAULT '0' ,
  48.   `id_cil` INT(2) NOT NULL ,
  49.   `id_esf` INT(5) NOT NULL ,
  50.   PRIMARY KEY (`Id_Rx`) ,
  51.   INDEX `fk_rx_cilindro1_idx` (`id_cil` ASC) ,
  52.   INDEX `fk_rx_esfera1_idx` (`id_esf` ASC) ,
  53.   CONSTRAINT `fk_rx_cilindro1`
  54.     FOREIGN KEY (`id_cil` )
  55.     REFERENCES `stocklentesbrujuleando`.`cilindro` (`ID_cil` )
  56.   CONSTRAINT `fk_rx_esfera1`
  57.     FOREIGN KEY (`id_esf` )
  58.     REFERENCES `stocklentesbrujuleando`.`esfera` (`ID_esf` )
  59. DEFAULT CHARACTER SET = utf8;
  60.  
  61.  
  62. -- -----------------------------------------------------
  63. -- Table `stocklentesbrujuleando`.`item`
  64. -- -----------------------------------------------------
  65. CREATE  TABLE IF NOT EXISTS `stocklentesbrujuleando`.`item` (
  66.   `item_ID` INT(5) NOT NULL AUTO_INCREMENT ,
  67.   `id_rx` INT(2) NOT NULL ,
  68.   `id_lente` INT(2) NOT NULL ,
  69.   PRIMARY KEY (`item_ID`) ,
  70.   INDEX `fk_item_lentes1_idx` (`id_lente` ASC) ,
  71.   INDEX `fk_item_rx1_idx` (`id_rx` ASC) ,
  72.   CONSTRAINT `fk_item_lentes1`
  73.     FOREIGN KEY (`id_lente` )
  74.     REFERENCES `stocklentesbrujuleando`.`lentes` (`ID_lente` )
  75.   CONSTRAINT `fk_item_rx1`
  76.     FOREIGN KEY (`id_rx` )
  77.     REFERENCES `stocklentesbrujuleando`.`rx` (`Id_Rx` )
  78. DEFAULT CHARACTER SET = utf8;
  79.  
  80.  
  81. -- -----------------------------------------------------
  82. -- Table `stocklentesbrujuleando`.`movimiento`
  83. -- -----------------------------------------------------
  84. CREATE  TABLE IF NOT EXISTS `stocklentesbrujuleando`.`movimiento` (
  85.   `venta` INT(5) UNSIGNED NULL ,
  86.   `compra` INT(5) UNSIGNED NULL ,
  87.   `taller` INT(5) UNSIGNED NULL ,
  88.   `regula_mas` INT(5) UNSIGNED NULL ,
  89.   `regula_menos` INT(5) UNSIGNED NULL ,
  90.   `fecha` TIMESTAMP NOT NULL ,
  91.   `id_item` INT(5) NOT NULL ,
  92.   `id_lente` INT(2) NULL ,
  93.   `id_cilindro` INT(2) NULL ,
  94.   `id_esfera` INT(5) NULL ,
  95.   PRIMARY KEY (`id_mov`) ,
  96.   INDEX `fk_salida_item1_idx` (`id_item` ASC) ,
  97.   INDEX `fk_movimiento_lentes1_idx` (`id_lente` ASC) ,
  98.   INDEX `fk_movimiento_cilindro1_idx` (`id_cilindro` ASC) ,
  99.   INDEX `fk_movimiento_esfera1_idx` (`id_esfera` ASC) ,
  100.   CONSTRAINT `fk_salida_item1`
  101.     FOREIGN KEY (`id_item` )
  102.     REFERENCES `stocklentesbrujuleando`.`item` (`item_ID` )
  103.   CONSTRAINT `fk_movimiento_lentes1`
  104.     FOREIGN KEY (`id_lente` )
  105.     REFERENCES `stocklentesbrujuleando`.`lentes` (`ID_lente` )
  106.   CONSTRAINT `fk_movimiento_cilindro1`
  107.     FOREIGN KEY (`id_cilindro` )
  108.     REFERENCES `stocklentesbrujuleando`.`cilindro` (`ID_cil` )
  109.   CONSTRAINT `fk_movimiento_esfera1`
  110.     FOREIGN KEY (`id_esfera` )
  111.     REFERENCES `stocklentesbrujuleando`.`esfera` (`ID_esf` )
  112. DEFAULT CHARACTER SET = utf8;
  113.  
  114.  
  115.  
  116. SET SQL_MODE=@OLD_SQL_MODE;
  117. SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
  118. SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

las tablas esfera, cilindro, rx, item, lentes pobladas.

ahora estoy probando la tabla movimientos y si intento introducir un item que no existe en la tabla item, este entra igual, cómo debería hacer para evitar esto?