-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathschema1.sql
More file actions
78 lines (71 loc) · 2.99 KB
/
schema1.sql
File metadata and controls
78 lines (71 loc) · 2.99 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
-- Creazione della tabella Camerieri
CREATE TABLE Camerieri (
id INTEGER PRIMARY KEY AUTOINCREMENT,
nome TEXT NOT NULL
);
-- Creazione della tabella Tavoli
CREATE TABLE Tavoli (
id INTEGER PRIMARY KEY AUTOINCREMENT, -- Identificativo unico del tavolo
posti INTEGER NOT NULL, -- Numero di posti disponibili al tavolo
stato TEXT CHECK(stato IN ('libero', 'occupato', 'riservato')) DEFAULT 'libero', -- Stato del tavolo
cameriere_id INTEGER, -- Cameriere assegnato al tavolo (se presente)
turno TEXT CHECK(turno IN ('pranzo', 'cena')) DEFAULT NULL, -- Turno di utilizzo del tavolo
data DATE DEFAULT NULL, -- Data di riserva o occupazione del tavolo
customer_name TEXT, -- Nome del cliente associato al tavolo
FOREIGN KEY (cameriere_id) REFERENCES Camerieri(id) -- Relazione con la tabella Camerieri
);
-- Creazione della tabella Clienti
CREATE TABLE IF NOT EXISTS Clienti (
id INTEGER PRIMARY KEY AUTOINCREMENT,
nome TEXT NOT NULL,
tavolo_id INTEGER NOT NULL,
cameriere_id INTEGER NOT NULL,
FOREIGN KEY (tavolo_id) REFERENCES Tavoli (id),
FOREIGN KEY (cameriere_id) REFERENCES Camerieri (id)
);
-- Creazione della tabella Pietanze
CREATE TABLE Pietanze (
id INTEGER PRIMARY KEY AUTOINCREMENT,
nome TEXT NOT NULL,
prezzo REAL NOT NULL,
categoria TEXT CHECK(categoria IN ('antipasto', 'primo', 'secondo', 'contorno', 'dolce', 'bevanda')) NOT NULL,
tempo_preparazione INTEGER NOT NULL DEFAULT 0 -- Tempo medio di preparazione in minuti
);
-- Creazione della tabella Ordini
CREATE TABLE Ordini (
id INTEGER PRIMARY KEY AUTOINCREMENT,
tavolo_id INTEGER,
cliente_id INTEGER,
stato TEXT CHECK(stato IN ('in preparazione', 'pronto', 'consegnato')) DEFAULT 'in preparazione',
totale REAL DEFAULT 0,
data_ora DATETIME DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (tavolo_id) REFERENCES Tavoli(id),
FOREIGN KEY (cliente_id) REFERENCES Clienti(id)
);
-- Creazione della tabella DettagliOrdine
CREATE TABLE DettagliOrdine (
id INTEGER PRIMARY KEY AUTOINCREMENT,
ordine_id INTEGER,
pietanza_id INTEGER,
quantita INTEGER NOT NULL,
prezzo_totale REAL NOT NULL,
ora_out DATETIME DEFAULT NULL, -- Ora prevista di completamento
FOREIGN KEY (ordine_id) REFERENCES Ordini(id),
FOREIGN KEY (pietanza_id) REFERENCES Pietanze(id)
);
-- Creazione della tabella Prenotazioni
CREATE TABLE Prenotazioni (
id INTEGER PRIMARY KEY AUTOINCREMENT,
cliente_nome TEXT NOT NULL,
tavolo_id INTEGER NOT NULL,
cameriere_id INTEGER NOT NULL,
data DATE NOT NULL,
turno TEXT CHECK(turno IN ('pranzo', 'cena')) NOT NULL,
FOREIGN KEY (tavolo_id) REFERENCES Tavoli(id),
FOREIGN KEY (cameriere_id) REFERENCES Camerieri(id)
);
-- Creazione della tabella ConfigurazioneCucina (opzionale)
CREATE TABLE ConfigurazioneCucina (
id INTEGER PRIMARY KEY AUTOINCREMENT,
margine_sicurezza_percentuale REAL DEFAULT 20.0 -- Margine di sicurezza per il tempo di preparazione
);