inventario.sql 3.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. -- Crea la base de datos del sistema de inventario.
  2. CREATE DATABASE IF NOT EXISTS inventario
  3. CHARACTER SET = 'utf8mb4'
  4. COLLATE = 'utf8mb4_general_ci';
  5. -- Opera todas las sentencias SQL sobre la base de datos del sistema de inventario.
  6. USE inventario;
  7. -- Crea la tabla de los roles de los usuarios.
  8. CREATE TABLE IF NOT EXISTS `roles` (
  9. `idRol` INT(2) UNSIGNED NOT NULL,
  10. `nombre` VARCHAR(25) NOT NULL,
  11. CONSTRAINT `roles_idRol_primario` PRIMARY KEY(`idRol`),
  12. CONSTRAINT `roles_nombre_unico` UNIQUE(`nombre`)
  13. );
  14. -- Crea la tabla de los usuarios.
  15. CREATE TABLE IF NOT EXISTS `usuarios` (
  16. `idUsuario` INT(6) UNSIGNED NOT NULL,
  17. `correo` VARCHAR(50) NOT NULL,
  18. `idRol` INT(2) UNSIGNED NOT NULL,
  19. `nombre` VARCHAR(100) NOT NULL,
  20. `contrasena` VARCHAR(25) NOT NULL,
  21. `estatus` INT(1) UNSIGNED NOT NULL,
  22. CONSTRAINT `usuarios_idUsuario_primario` PRIMARY KEY(`idUsuario`),
  23. CONSTRAINT `usuarios_correo_unico` UNIQUE(`correo`),
  24. CONSTRAINT `usuarios_idRol_foraneo` FOREIGN KEY(`idRol`)
  25. REFERENCES `roles`(`idRol`)
  26. ON DELETE RESTRICT
  27. ON UPDATE RESTRICT
  28. );
  29. -- Crea la tabla de los productos.
  30. CREATE TABLE IF NOT EXISTS `productos` (
  31. `idProducto` INT(6) UNSIGNED NOT NULL AUTO_INCREMENT,
  32. `nombre` VARCHAR(40) NOT NULL,
  33. `precio` DECIMAL(16, 2) UNSIGNED NOT NULL,
  34. `cantidad` SMALLINT(4) UNSIGNED NOT NULL DEFAULT 0,
  35. `estatus` INT(1) UNSIGNED NOT NULL DEFAULT 1,
  36. `fecha_registro` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  37. `fecha_modificacion` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  38. CONSTRAINT `productos_idProducto_primario` PRIMARY KEY(`idProducto`),
  39. CONSTRAINT `productos_nombre_unico` UNIQUE(`nombre`)
  40. );
  41. -- Crea la tabla de los tipos de movimientos de los productos.
  42. CREATE TABLE IF NOT EXISTS `tipos_movimientos` (
  43. `idTipoMovimiento` INT(2) UNSIGNED NOT NULL,
  44. `nombre` VARCHAR(25) NOT NULL,
  45. CONSTRAINT `tipos_movimientos_idTipoMovimiento_primario` PRIMARY KEY(`idTipoMovimiento`),
  46. CONSTRAINT `tipos_movimientos_nombre_unico` UNIQUE(`nombre`)
  47. );
  48. -- Crea la tabla de los movimientos de los productos (histórico).
  49. CREATE TABLE IF NOT EXISTS `movimientos` (
  50. `idMovimiento` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
  51. `idProducto` INT(6) UNSIGNED NOT NULL,
  52. `idTipoMovimiento` INT(2) UNSIGNED NOT NULL,
  53. `idUsuario` INT(6) UNSIGNED NOT NULL,
  54. `cantidad` SMALLINT(4) UNSIGNED NOT NULL,
  55. `fecha_registro` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  56. `fecha_modificacion` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  57. CONSTRAINT `movimientos_idMovimiento_primario` PRIMARY KEY(`idMovimiento`),
  58. CONSTRAINT `movimientos_idProducto_foraneo` FOREIGN KEY(`idProducto`)
  59. REFERENCES `productos`(`idProducto`)
  60. ON DELETE RESTRICT
  61. ON UPDATE RESTRICT,
  62. CONSTRAINT `movimientos_idTipoMovimiento_foraneo` FOREIGN KEY(`idTipoMovimiento`)
  63. REFERENCES `tipos_movimientos`(`idTipoMovimiento`)
  64. ON DELETE RESTRICT
  65. ON UPDATE RESTRICT,
  66. CONSTRAINT `movimientos_idUsuario_foraneo` FOREIGN KEY(`idUsuario`)
  67. REFERENCES `usuarios`(`idUsuario`)
  68. ON DELETE RESTRICT
  69. ON UPDATE RESTRICT
  70. );
  71. -- Registra los tipos de movimientos de los productos.
  72. INSERT IGNORE INTO `tipos_movimientos`(`idTipoMovimiento`, `nombre`) VALUES
  73. (1, 'Entrada'),
  74. (2, 'Salida');
  75. -- Registra los roles de los usuarios.
  76. INSERT IGNORE INTO `roles`(`idRol`, `nombre`) VALUES
  77. (1, 'Administrador'),
  78. (2, 'Almacenista');
  79. -- Registra los usuarios.
  80. INSERT IGNORE INTO `usuarios`(`idUsuario`, `correo`, `idRol`, `nombre`, `contrasena`, `estatus`) VALUES
  81. (1, 'admin@castores.com.mx', 1, 'Usuario Administrador', 'admin', 1),
  82. (2, 'almacen@castores.com.mx', 2, 'Usuario Almacenista', 'almacen', 1);