Advertisement
KevinPerez

Muchos a Muchos con combinación de foreign key únicas

Sep 21st, 2014
197
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 2.35 KB | None | 0 0
  1. -- Crearemos 5 tablas tablas: Producto, TipoPrecio, Boleta, DetalleBoleta finalmente la tabla de muchos a muchos TipoPrecioXProducto (nota: crear una base de datos llamada Ejemplo antes de empezar).
  2.  
  3. --- Ejecutar estas lineas de código primero
  4. --- Begin
  5. USE [Ejemplo]
  6. GO
  7.  
  8. CREATE TABLE TipoPrecio
  9. (
  10.     CodTipoPrecio VARCHAR(4) NOT NULL,
  11.     Descripcion VARCHAR(50) NULL,
  12.     Precio NUMERIC(18,2) NULL,
  13. )
  14.  
  15. CREATE TABLE Boleta
  16. (
  17.     CodBoleta INT NOT NULL PRIMARY KEY,
  18.     NombreUsuario VARCHAR(50) NULL,
  19.     Fecha DATE NULL,
  20.     Hora TIME(7) NULL,
  21.     Total NUMERIC(18, 2) NULL,
  22.     NombreCliente VARCHAR(50) NULL,
  23.     Estado VARCHAR(1) NULL
  24. )
  25.  
  26. CREATE TABLE DetalleBoleta
  27. (
  28.     CodBoleta INT NOT NULL FOREIGN KEY REFERENCES Boleta(CodBoleta) ON DELETE cascade,
  29.     CodTipoPrecio VARCHAR(4) FOREIGN KEY REFERENCES TipoPrecio(CodTipoPrecio),
  30.     CodProducto VARCHAR(4)FOREIGN KEY REFERENCES Producto(CodProducto),
  31.     Cantidad NUMERIC(18,2) NULL,
  32.     Precio NUMERIC(18,2) NULL
  33. )
  34.  
  35. CREATE TABLE Producto(
  36.     CodProducto VARCHAR(4) NOT NULL,
  37.     Descripcion VARCHAR(50) NULL,
  38.     CodProveedor INT NULL,
  39.     CostoUnitario NUMERIC(18, 2) NULL,
  40.     Cantidad NUMERIC(18, 2) NULL,
  41.     Estado CHAR(1) NULL,
  42.     Imagen VARCHAR(MAX) NULL,
  43.     PrecioUnitario NUMERIC(18, 2) NULL,
  44. --- End
  45.  
  46. CREATE TABLE TipoPrecioXProducto
  47. (
  48.   CodUnidadMedida VARCHAR(4),
  49.   CodProducto VARCHAR(4),
  50.   CONSTRAINT Prec_Prod_pk PRIMARY KEY (CodUnidadMedida, CodProducto),
  51.   -- Llave primaria de la tabla Muchos-a-muchos
  52.   CONSTRAINT FK_UnidadMedida
  53.         FOREIGN KEY (CodTipoPrecio) REFERENCES TipoPrecio(CodTipoPrecio),
  54.   CONSTRAINT FK_CodProducto
  55.         FOREIGN KEY (CodProducto) REFERENCES Producto(CodProducto)
  56. );
  57. --y como hacer que una tabla tenga de referencia esta
  58. -- PRIMARY KEY MANY TO MANY
  59. -- "Dropeamos" la tabla, este es el código innecesario al que me refería, pero si se quiere que DetalleBoleta tenga como llave
  60. -- foreana la tabla de muchos a muchos se tiene que hacer esto.
  61.  
  62. DROP TABLE DetalleBoleta
  63. CREATE TABLE DetalleBoleta
  64. (
  65.     CodBoleta INT NOT NULL FOREIGN KEY REFERENCES Boleta(CodBoleta) ON DELETE cascade,
  66.     CodTipoPrecio VARCHAR(4),
  67.     CodProducto VARCHAR(4),
  68.     CONSTRAINT Bol_Prec_Prod_fk FOREIGN KEY (CodTipoPrecio, CodProducto)
  69.     -- El nombre la llave foranea tiene que ser diferente al de la llave primaria de la tabla Muchos-a-Muchos
  70.     REFERENCES Prec_Prod_pk,
  71.     Cantidad NUMERIC(18,2) NULL,
  72.     Precio NUMERIC(18,2) NULL
  73. )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement