Advertisement
filomancio

Untitled

Mar 23rd, 2016
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 11.78 KB | None | 0 0
  1. CREATE TABLE Sede(
  2.     ID_Sede INT PRIMARY KEY,
  3.     Nome CHAR(30) NOT NULL UNIQUE,
  4.     Via CHAR(30) NOT NULL,
  5.     Numero_Civico SMALLINT UNSIGNED NOT NULL,
  6.     Citta CHAR(30) NOT NULL,
  7.     CAP INT UNSIGNED NOT NULL, /*o mediumint*/
  8.     Ora_Apertura TIME NOT NULL, /* '00:00:00' */
  9.     Ora_Chiusura TIME NOT NULL  /* 'HH:MM:SS' */
  10. );
  11.  
  12.  
  13. CREATE TABLE Sala(
  14.     ID_Sala INT PRIMARY KEY,
  15.     Num_Sala INT UNSIGNED NOT NULL,
  16.     Sede INT NOT NULL,
  17.     FOREIGN KEY(Sede)
  18.         REFERENCES Sede(ID_Sede)
  19.         ON UPDATE CASCADE
  20.         ON DELETE CASCADE
  21. );
  22.  
  23.  
  24. CREATE TABLE Magazzino(
  25.     ID_Magazzino INT PRIMARY KEY,
  26.     Sede INT NOT NULL,
  27.     FOREIGN KEY(Sede)
  28.         REFERENCES Sede(ID_Sede)
  29.         ON UPDATE CASCADE
  30.         ON DELETE CASCADE
  31. );
  32.  
  33.  
  34. CREATE TABLE Ingrediente(
  35.     ID_Ingrediente INT PRIMARY KEY,
  36.     Nome CHAR(30) NOT NULL UNIQUE,
  37.     Provenienza CHAR(30) NOT NULL,
  38.     Genere CHAR(15) NOT NULL,
  39.     Tipo_Produzione CHAR(15), /* intensiva, biologica, altro */
  40.     Allergene BOOLEAN NOT NULL /* no allergene = false; รจ allergene = true */
  41. );
  42.  
  43.  
  44. CREATE TABLE Confezione(
  45.     ID_Confezione INT PRIMARY KEY,
  46.     Codice_Lotto CHAR(20) NOT NULL,
  47.     Quantita INT UNSIGNED NOT NULL, /*peso in grammi*/
  48.     Quantita_Iniziale INT UNSIGNED NOT NULL,
  49.     Prezzo_Acquisto FLOAT UNSIGNED NOT NULL,
  50.     Data_Scadenza DATE,
  51.     Aspetto ENUM('buono', 'esteticamente rovinato', 'completamente rovinato') NOT NULL,
  52.     Stato ENUM('completa', 'in uso', 'parziale') NOT NULL DEFAULT 'completa',
  53.     Data_Acquisto DATE NOT NULL,
  54.     Data_Arrivo DATE NOT NULL,
  55.     Ind_Collocamento_Mag CHAR(5) NOT NULL,
  56.     Magazzino INT NOT NULL,
  57.     Ingrediente INT NOT NULL,
  58.     FOREIGN KEY(Magazzino)
  59.         REFERENCES Magazzino(ID_Magazzino)
  60.         ON UPDATE CASCADE
  61.         ON DELETE CASCADE,     
  62.     FOREIGN KEY(Ingrediente)
  63.         REFERENCES Ingrediente(ID_Ingrediente)
  64.         ON UPDATE CASCADE
  65.         ON DELETE CASCADE
  66. );
  67.  
  68.  
  69. CREATE TABLE Menu(
  70.     ID_Menu INT PRIMARY KEY,
  71.     Data_Entrata_Vigore DATE NOT NULL, /* 'YYYY-MM-DD' */
  72.     Data_Cessazione DATE,
  73.     Sede INT NOT NULL,
  74.     FOREIGN KEY(Sede)
  75.         REFERENCES Sede(ID_Sede)
  76.         ON UPDATE CASCADE
  77.         ON DELETE CASCADE
  78. );
  79.  
  80.  
  81. CREATE TABLE Ricetta(
  82.     ID_Ricetta INT PRIMARY KEY,
  83.     Nome CHAR(50) NOT NULL UNIQUE, /*nomi lunghi delle ricette*/
  84.     Portata ENUM('Antipasto' , 'Primo', 'Secondo', 'Contorno', 'Dessert') NOT NULL
  85. );
  86.  
  87.  
  88. CREATE TABLE Piatto_Nel_Menu (
  89.     Menu INT NOT NULL,
  90.     Ricetta INT NOT NULL,
  91.     Prezzo_Al_Pubblico FLOAT UNSIGNED NOT NULL,
  92.     Prezzo_Di_Produzione FLOAT UNSIGNED,
  93.     Novita DATE,
  94.     FOREIGN KEY(Menu)
  95.         REFERENCES Menu(ID_Menu)
  96.         ON UPDATE CASCADE
  97.         ON DELETE CASCADE,
  98.     FOREIGN KEY(Ricetta)
  99.         REFERENCES Ricetta(ID_Ricetta)
  100.         ON UPDATE CASCADE
  101.         ON DELETE CASCADE,
  102.     PRIMARY KEY(Menu, Ricetta)
  103. );/*Associazione tra Menu e Ricetta*/
  104.  
  105.  
  106. CREATE TABLE Macchinario(
  107.     ID_Macchinario INT PRIMARY KEY,
  108.     Nome CHAR(30) NOT NULL UNIQUE
  109. );
  110.  
  111.  
  112. CREATE TABLE Macchinario_Nella_Sede(
  113.     ID_Mac_Sede INT PRIMARY KEY,
  114.     In_Funzione BOOLEAN NOT NULL DEFAULT 0, /* false = non in uso, true = in uso */
  115.     Macchinario INT NOT NULL,
  116.     Sede INT NOT NULL,
  117.     FOREIGN KEY(Macchinario)
  118.         REFERENCES Macchinario(ID_Macchinario)  
  119.         ON UPDATE CASCADE
  120.         ON DELETE CASCADE,
  121.     FOREIGN KEY(Sede)
  122.         REFERENCES Sede(ID_Sede)   
  123.         ON UPDATE CASCADE
  124.         ON DELETE CASCADE
  125. );
  126.  
  127.  
  128. CREATE TABLE Funzione_Del_Macchinario (
  129.     ID_Funzione INT PRIMARY KEY,
  130.     Funzione CHAR(50) NOT NULL
  131. );
  132.  
  133.  
  134. CREATE TABLE Specifica_Funzione(
  135.     Funzione INT NOT NULL,
  136.     Macchinario INT NOT NULL,
  137.     FOREIGN KEY(Funzione)
  138.         REFERENCES Funzione_Del_Macchinario(ID_Funzione)   
  139.         ON UPDATE CASCADE
  140.         ON DELETE CASCADE,
  141.     FOREIGN KEY(Macchinario)
  142.         REFERENCES Macchinario(ID_Macchinario)
  143.         ON UPDATE CASCADE
  144.         ON DELETE CASCADE,
  145.     PRIMARY KEY(Funzione, Macchinario)
  146. );/*Associazione tra Macchinario e Funzione_Del_Macchinario*/
  147.  
  148.  
  149. CREATE TABLE Fase (
  150.     Numero_Passaggio INT NOT NULL,
  151.     Dose SMALLINT UNSIGNED,
  152.     Tempo INT UNSIGNED,
  153.     Utilizzo_Estetico BOOLEAN, /*se true ha utilizzo estetico*/
  154.     Manovre CHAR(100) NOT NULL,
  155.     Ricetta INT NOT NULL,
  156.     Ingrediente_Usato INT,
  157.     Macchinario INT,   
  158.     FOREIGN KEY(Ricetta)
  159.         REFERENCES Ricetta(ID_Ricetta)
  160.         ON UPDATE CASCADE
  161.         ON DELETE CASCADE,
  162.     FOREIGN KEY(Ingrediente_Usato)
  163.         REFERENCES Ingrediente(ID_Ingrediente)
  164.         ON UPDATE CASCADE
  165.         ON DELETE CASCADE,
  166.     FOREIGN KEY(Macchinario)
  167.         REFERENCES Macchinario(ID_Macchinario)
  168.         ON UPDATE CASCADE
  169.         ON DELETE CASCADE,
  170.     PRIMARY KEY(Numero_Passaggio, Ricetta)
  171. );
  172.  
  173.  
  174. CREATE TABLE Variazione(        /* se elimini in nuova_manovra scrivi "uccidi questo" o "non agg quello"*/
  175.     ID_Variazione INT PRIMARY KEY, /*se aggiungi o altro attributo tipo Aggiungi_Dopo oppure utilizza la FK di fase*/
  176.     Nuova_Dose SMALLINT UNSIGNED, /*per la modifica semplicemente FK con fase da sostituire e altri attributi da cambiare, riscrivi anche ing mac e dose se sono uguali*/
  177.     Nuova_Manovra CHAR(100) NOT NULL,
  178.     Nuovo_Tempo SMALLINT UNSIGNED,
  179.     Tipo_Variazione ENUM('modifica', 'elimina', 'aggiungi dopo') NOT NULL, /*tipo variazione*/
  180.     Utilizzo_Estetico BOOLEAN, /*se true ha utilizzo estetico*/
  181.     Ricetta INT NOT NULL,
  182.     Fase INT NOT NULL,
  183.     Macchinario INT,
  184.     Ingrediente INT,
  185.     FOREIGN KEY(Ricetta)
  186.         REFERENCES Ricetta(ID_Ricetta)
  187.         ON UPDATE CASCADE
  188.         ON DELETE CASCADE,
  189.     FOREIGN KEY(Fase)
  190.         REFERENCES Fase(Numero_Passaggio)
  191.         ON UPDATE CASCADE
  192.         ON DELETE CASCADE,
  193.     FOREIGN KEY(Macchinario)
  194.         REFERENCES Macchinario(ID_Macchinario)
  195.         ON UPDATE CASCADE
  196.         ON DELETE CASCADE,
  197.     FOREIGN KEY(Ingrediente)
  198.         REFERENCES Ingrediente(ID_Ingrediente)
  199.         ON UPDATE CASCADE
  200.         ON DELETE CASCADE
  201. );
  202.  
  203.  
  204. CREATE TABLE Tavolo(
  205.     ID_Tavolo INT PRIMARY KEY,
  206.     Num_Tavolo INT UNSIGNED NOT NULL,
  207.     Stato BOOLEAN NOT NULL DEFAULT 0,
  208.     Posti SMALLINT UNSIGNED NOT NULL,
  209.     Sala INT NOT NULL,
  210.     FOREIGN KEY (Sala)
  211.         REFERENCES Sala(ID_Sala)
  212.         ON UPDATE CASCADE
  213.         ON DELETE CASCADE
  214. );
  215.  
  216.  
  217. CREATE TABLE Pony(
  218.     ID_Pony INT PRIMARY KEY,
  219.     Tipologia BOOLEAN NOT NULL, /* false = 2 ruote; true = 4 ruote */
  220.     Stato BOOLEAN NOT NULL DEFAULT 0,
  221.     Sede INT NOT NULL,
  222.     FOREIGN KEY(Sede)
  223.         REFERENCES Sede(ID_Sede)
  224.         ON UPDATE CASCADE
  225.         ON DELETE CASCADE
  226. );
  227.  
  228.  
  229. CREATE TABLE Comanda (
  230.     ID_Comanda INT PRIMARY KEY,
  231.     Stato ENUM('nuova', 'parziale', 'in preparazione', 'evasa', 'consegna') NOT NULL DEFAULT 'nuova',
  232.     Time_Stamp DATETIME,
  233.     Partenza_Takeaway DATETIME,
  234.     Consegna_Takeaway DATETIME,
  235.     Rientro_Takeaway DATETIME,
  236.     Tavolo INT,
  237.     Pony INT,
  238.     Sede INT NOT NULL,
  239.     FOREIGN KEY(Tavolo)
  240.         REFERENCES Tavolo(ID_Tavolo)
  241.         ON UPDATE CASCADE
  242.         ON DELETE CASCADE,
  243.     FOREIGN KEY(Pony)
  244.         REFERENCES Pony(ID_Pony)
  245.         ON UPDATE CASCADE
  246.         ON DELETE CASCADE,
  247.     FOREIGN KEY(Sede)
  248.         REFERENCES Sede(ID_Sede)
  249.         ON UPDATE CASCADE
  250.         ON DELETE CASCADE
  251. );
  252.  
  253.  
  254. CREATE TABLE Piatto_Ordinato(
  255.     ID_Piatto INT PRIMARY KEY,
  256.     Stato ENUM('attesa', 'in preparazione', 'servizio') NOT NULL DEFAULT 'attesa',
  257.     Ricetta INT NOT NULL,
  258.     Comanda INT NOT NULL,
  259.     FOREIGN KEY(Ricetta)
  260.         REFERENCES Ricetta(ID_Ricetta)
  261.         ON UPDATE CASCADE
  262.         ON DELETE CASCADE,
  263.     FOREIGN KEY(Comanda)
  264.         REFERENCES Comanda(ID_Comanda)     
  265.         ON UPDATE CASCADE
  266.         ON DELETE CASCADE
  267. );
  268.  
  269.  
  270. CREATE TABLE Account (
  271.     ID_Account INT PRIMARY KEY,
  272.     Username CHAR(20) NOT NULL UNIQUE,
  273.     Password CHAR(20) NOT NULL,
  274.     Nome CHAR(20) NOT NULL,
  275.     Cognome CHAR(20) NOT NULL,
  276.     Data_Nascita DATE NOT NULL,
  277.     Sesso BOOLEAN, /* false = femmina, true = maschio */
  278.     Via CHAR(20),
  279.     Numero_Civico SMALLINT UNSIGNED,
  280.     Citta CHAR(30),
  281.     CAP INT UNSIGNED,
  282.     Bannato BOOLEAN NOT NULL DEFAULT 0
  283. );
  284.  
  285.  
  286. CREATE TABLE Questionario(
  287.     ID_Questionario INT PRIMARY KEY,
  288.     Attivo BOOLEAN NOT NULL, /*true se la sede sta utilizzando questo questionario*/
  289.     Sede INT NOT NULL,
  290.     FOREIGN KEY(Sede)
  291.         REFERENCES Sede(ID_Sede)
  292.         ON UPDATE CASCADE
  293.         ON DELETE CASCADE
  294. );
  295.  
  296.  
  297. CREATE TABLE Recensione(
  298.     ID_Recensione INT PRIMARY KEY,
  299.     Testo CHAR(255) NOT NULL,
  300.     Voto TINYINT UNSIGNED NOT NULL,
  301.     Account INT NOT NULL,
  302.     Questionario INT NOT NULL,
  303.     FOREIGN KEY(Account)
  304.         REFERENCES Account(ID_Account)
  305.         ON UPDATE CASCADE
  306.         ON DELETE RESTRICT,
  307.     FOREIGN KEY(Questionario)
  308.         REFERENCES Questionario(ID_Questionario)
  309.         ON UPDATE CASCADE
  310.         ON DELETE CASCADE
  311. );
  312.  
  313.  
  314. CREATE TABLE Account_Giudica_Recensione(
  315.     Voto_Veridicita SMALLINT UNSIGNED NOT NULL,
  316.     Voto_Accuratezza SMALLINT UNSIGNED NOT NULL,
  317.     Testo CHAR(100),
  318.     Account INT NOT NULL,
  319.     Recensione INT NOT NULL,
  320.     FOREIGN KEY(Account)    
  321.         REFERENCES Account(ID_Account)
  322.         ON UPDATE CASCADE
  323.         ON DELETE CASCADE,
  324.     FOREIGN KEY(Recensione)
  325.         REFERENCES Recensione(ID_Recensione)
  326.         ON UPDATE CASCADE
  327.         ON DELETE CASCADE,
  328.     PRIMARY KEY(Account, Recensione)
  329. ); /*Associazione tra Account e Recensione*/
  330.  
  331.  
  332. CREATE TABLE Domanda_Questionario(
  333.     ID_Domanda INT PRIMARY KEY,
  334.     Testo CHAR(100) NOT NULL,
  335.     Questionario INT NOT NULL,
  336.     FOREIGN KEY(Questionario)
  337.         REFERENCES Questionario(ID_Questionario)
  338.         ON UPDATE CASCADE
  339.         ON DELETE CASCADE
  340. );
  341.  
  342.  
  343. CREATE TABLE Risposta_Questionario(
  344.     ID_Risposta INT PRIMARY KEY,
  345.     Testo CHAR(100) NOT NULL,
  346.     Domanda INT NOT NULL,
  347.     FOREIGN KEY(Domanda)
  348.         REFERENCES Domanda_Questionario(ID_Domanda)
  349.         ON UPDATE CASCADE
  350.         ON DELETE CASCADE
  351. );
  352.  
  353.  
  354. CREATE TABLE Serata_A_Tema (
  355.     ID_Tema INT PRIMARY KEY,
  356.     Tema CHAR(20) NOT NULL UNIQUE,
  357.     Disposizione_Tavoli CHAR(30) NOT NULL,
  358.     Decorazioni CHAR(150) NOT NULL
  359. );
  360.  
  361.  
  362. CREATE TABLE Prenotazione (
  363.     ID_Prenotazione INT PRIMARY KEY,
  364.     Num_Persone SMALLINT UNSIGNED NOT NULL,
  365.     Data_Prenotazione DATETIME NOT NULL,
  366.     Nominativo CHAR(20) NOT NULL,
  367.     Num_Telefono BIGINT UNSIGNED,
  368.     Account INT,
  369.     Serata INT DEFAULT NULL,
  370.     FOREIGN KEY(Serata)
  371.         REFERENCES Serata_A_Tema(ID_Tema)
  372.         ON UPDATE CASCADE
  373.         ON DELETE RESTRICT, /*o no action (uguale a restrict)*/    
  374.     FOREIGN KEY(Account)
  375.         REFERENCES Account(ID_Account)
  376.         ON UPDATE CASCADE
  377.         ON DELETE RESTRICT
  378. );
  379.  
  380.  
  381. CREATE TABLE Prenota_Tavolo(
  382.     Prenotazione INT NOT NULL,
  383.     Tavolo INT NOT NULL,
  384.     FOREIGN KEY(Prenotazione)
  385.         REFERENCES Prenotazione(ID_Prenotazione)
  386.         ON UPDATE CASCADE
  387.         ON DELETE CASCADE,
  388.     FOREIGN KEY(Tavolo)
  389.         REFERENCES Tavolo(ID_Tavolo)
  390.         ON UPDATE CASCADE
  391.         ON DELETE CASCADE,
  392.     PRIMARY KEY(Prenotazione, Tavolo)
  393. ); /*Associazione tra Prenotazione e Tavolo*/
  394.  
  395.  
  396. CREATE TABLE Risposta_Data(
  397.     Recensione INT NOT NULL,
  398.     Risposta INT NOT NULL,
  399.     FOREIGN KEY(Recensione)
  400.         REFERENCES Recensione(ID_Recensione)   
  401.         ON UPDATE CASCADE
  402.         ON DELETE CASCADE,
  403.     FOREIGN KEY(Risposta)
  404.         REFERENCES Risposta_Questionario(ID_Risposta)  
  405.         ON UPDATE CASCADE
  406.         ON DELETE CASCADE,
  407.     PRIMARY KEY(Recensione, Risposta)
  408. ); /*Associazione tra Risposta_Questionario e Recensione*/
  409.  
  410.  
  411. CREATE TABLE Variazione_Al_Piatto(
  412.     Piatto INT NOT NULL,
  413.     Variazione INT NOT NULL,
  414.     FOREIGN KEY(Piatto)
  415.         REFERENCES Piatto_Ordinato(ID_Piatto)
  416.         ON UPDATE CASCADE
  417.         ON DELETE CASCADE,
  418.     FOREIGN KEY(Variazione)
  419.         REFERENCES Variazione(ID_Variazione)
  420.         ON UPDATE CASCADE
  421.         ON DELETE CASCADE,
  422.     PRIMARY KEY(Piatto, Variazione)
  423. ); /*Associazione tra Variazione e Piatto Ordinato*/
  424.  
  425.  
  426. CREATE TABLE Proposta(
  427.     ID_Proposta INT PRIMARY KEY,
  428.     Nome_Piatto CHAR(30),
  429.     Procedimento TEXT NOT NULL,
  430.     Descrizione CHAR(100) NOT NULL,
  431.     Ingredienti CHAR(255),
  432.     Account INT NOT NULL,
  433.     Ricetta INT,
  434.     FOREIGN KEY(Account)
  435.         REFERENCES Account(ID_Account)  
  436.         ON UPDATE CASCADE
  437.         ON DELETE RESTRICT,
  438.     FOREIGN KEY(Ricetta)
  439.         REFERENCES Ricetta(ID_Ricetta)
  440.         ON UPDATE CASCADE
  441.         ON DELETE CASCADE
  442. );
  443.  
  444.  
  445. CREATE TABLE Account_Giudica_Proposta(
  446.     Voto SMALLINT UNSIGNED NOT NULL,
  447.     Account INT NOT NULL,
  448.     Proposta INT NOT NULL,
  449.     FOREIGN KEY(Account)
  450.         REFERENCES Account(ID_Account) 
  451.         ON UPDATE CASCADE
  452.         ON DELETE CASCADE,
  453.     FOREIGN KEY(Proposta)
  454.         REFERENCES Proposta(ID_Proposta)
  455.         ON UPDATE CASCADE
  456.         ON DELETE CASCADE,
  457.     PRIMARY KEY(Account, Proposta)
  458. ); /*Associazione tra Account e Proposta*/
  459.  
  460.  
  461.  
  462. /*///////////////////////////////////////////////////////////////////////////
  463.  
  464. -FK: http://dev.mysql.com/doc/refman/5.7/en/create-table-foreign-keys.html
  465.    
  466. -Specifying RESTRICT (or NO ACTION) is the same as omitting the ON DELETE or ON UPDATE clause.
  467.  
  468. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement