⬅ Torna alla Home

Problemi SQL - DDL + Dati di test

Copia il codice SQL del database che ti serve e incollalo nella scheda SQL di phpMyAdmin.

📂 Indice

1. Social Network

Database di un social network.

UTENTI     (ID, Username, Email, Citta, AnnoNascita, Verificato)
POST       (ID, ID_Utente*, Testo, DataOra, Likes, Visibilita)
COMMENTI   (ID, ID_Post*, ID_Utente*, Testo, DataOra)
FOLLOWER   (ID_Seguace*, ID_Seguito*, DataInizio)

Creazione tabelle

CREATE TABLE Utenti (
    ID          INT AUTO_INCREMENT PRIMARY KEY,
    Username    VARCHAR(30)  NOT NULL UNIQUE,
    Email       VARCHAR(100) NOT NULL UNIQUE,
    Citta       VARCHAR(50),
    AnnoNascita INT,
    Verificato  BOOLEAN NOT NULL DEFAULT FALSE
);

CREATE TABLE Post (
    ID         INT AUTO_INCREMENT PRIMARY KEY,
    ID_Utente  INT NOT NULL,
    Testo      VARCHAR(280) NOT NULL,
    DataOra    DATETIME NOT NULL,
    Likes      INT NOT NULL DEFAULT 0,
    Visibilita VARCHAR(10) NOT NULL DEFAULT 'pubblico',
    FOREIGN KEY (ID_Utente) REFERENCES Utenti(ID)
        ON DELETE CASCADE
);

CREATE TABLE Commenti (
    ID        INT AUTO_INCREMENT PRIMARY KEY,
    ID_Post   INT NOT NULL,
    ID_Utente INT NOT NULL,
    Testo     VARCHAR(200) NOT NULL,
    DataOra   DATETIME NOT NULL,
    FOREIGN KEY (ID_Post)   REFERENCES Post(ID)   ON DELETE CASCADE,
    FOREIGN KEY (ID_Utente) REFERENCES Utenti(ID) ON DELETE CASCADE
);

CREATE TABLE Follower (
    ID_Seguace INT  NOT NULL,
    ID_Seguito INT  NOT NULL,
    DataInizio DATE NOT NULL,
    PRIMARY KEY (ID_Seguace, ID_Seguito),
    FOREIGN KEY (ID_Seguace) REFERENCES Utenti(ID) ON DELETE CASCADE,
    FOREIGN KEY (ID_Seguito) REFERENCES Utenti(ID) ON DELETE CASCADE
);

Inserimento dati

INSERT INTO Utenti (Username, Email, Citta, AnnoNascita, Verificato) VALUES
('luca_v',     'luca@mail.it',   'Milano',  2001, TRUE),
('sara_foto',  'sara@mail.it',   'Roma',    2000, TRUE),
('marco99',    'marco@mail.it',  'Milano',  1999, FALSE),
('chiara_art', 'chiara@mail.it', 'Napoli',  2002, FALSE),
('gioele_dev', 'gioele@mail.it', 'Verona',  2001, TRUE),
('annatravel', 'anna@mail.it',   'Roma',    1998, FALSE),
('riki_music', 'riki@mail.it',   'Torino',  2003, FALSE),
('vale_chef',  'vale@mail.it',   'Milano',  2000, TRUE),
('ghost_user', 'ghost@mail.it',  NULL,      2002, FALSE);

INSERT INTO Post (ID_Utente, Testo, DataOra, Likes, Visibilita) VALUES
(1, 'Prima giornata a Milano sotto la pioggia',    '2024-03-01 09:15:00', 142, 'pubblico'),
(1, 'Nuovo progetto in arrivo, stay tuned!',       '2024-03-10 18:30:00',  87, 'pubblico'),
(2, 'Tramonto sul Colosseo',                       '2024-03-02 19:45:00', 310, 'pubblico'),
(2, 'Reel delle ultime foto di viaggio',           '2024-03-15 12:00:00',  55, 'amici'),
(3, 'Chi viene a studiare in biblioteca domani?',  '2024-03-03 10:00:00',  12, 'pubblico'),
(4, 'Sketch di oggi',                              '2024-03-05 14:20:00',  98, 'pubblico'),
(4, 'Processo creativo: dal bianco al colore',     '2024-03-12 16:00:00',  45, 'privato'),
(5, 'Deploy riuscito alle 2 di notte',             '2024-03-07 02:10:00', 201, 'pubblico'),
(6, 'Aeroporto di Roma, destinazione ignota',      '2024-03-08 06:30:00', 175, 'pubblico'),
(7, 'Nuovo beat disponibile su Spotify',           '2024-03-09 20:00:00',  88, 'pubblico'),
(8, 'Ricetta: pasta al pesto in 10 minuti',        '2024-03-11 13:00:00', 230, 'pubblico'),
(3, 'Esame superato!',                             '2024-03-20 17:00:00', 320, 'pubblico');

INSERT INTO Commenti (ID_Post, ID_Utente, Testo, DataOra) VALUES
(1,  2, 'Anche a Roma piove!',            '2024-03-01 10:00:00'),
(1,  3, 'Forza che passa',                '2024-03-01 10:30:00'),
(3,  8, 'Tramonto bellissimo!',           '2024-03-02 20:00:00'),
(8,  1, 'Grande gioele!',                 '2024-03-07 08:00:00'),
(8,  4, 'Anch io ho perso il sonno cosi', '2024-03-07 09:00:00'),
(11, 5, 'Provo subito questa ricetta!',   '2024-03-11 14:00:00'),
(11, 6, 'Che fame',                       '2024-03-11 14:30:00'),
(12, 1, 'Complimenti!!',                  '2024-03-20 17:10:00'),
(12, 2, 'Te lo meriti tutto',             '2024-03-20 17:15:00');

INSERT INTO Follower (ID_Seguace, ID_Seguito, DataInizio) VALUES
(1, 2, '2023-01-15'),
(1, 5, '2023-03-20'),
(2, 1, '2023-01-16'),
(3, 1, '2023-06-01'),
(3, 2, '2023-06-01'),
(4, 2, '2023-07-10'),
(5, 1, '2023-04-05'),
(6, 2, '2023-09-01'),
(7, 5, '2024-01-10'),
(8, 2, '2023-11-20');

2. Negozio Elettronica

Database di un negozio di elettronica online.

CATEGORIE       (ID, Nome, Descrizione)
PRODOTTI        (ID, Nome, Prezzo, Giacenza, ID_Categoria*)
CLIENTI         (ID, Nome, Cognome, Email, Citta, AnnoRegistrazione)
ORDINI          (ID, ID_Cliente*, DataOra, Stato)
DETTAGLI_ORDINE (ID_Ordine*, ID_Prodotto*, Quantita, PrezzoUnitario)

Creazione tabelle

CREATE TABLE Categorie (
    ID          INT AUTO_INCREMENT PRIMARY KEY,
    Nome        VARCHAR(50)  NOT NULL UNIQUE,
    Descrizione VARCHAR(200)
);

CREATE TABLE Prodotti (
    ID           INT AUTO_INCREMENT PRIMARY KEY,
    Nome         VARCHAR(100) NOT NULL,
    Prezzo       DECIMAL(8,2) NOT NULL,
    Giacenza     INT NOT NULL DEFAULT 0,
    ID_Categoria INT,
    FOREIGN KEY (ID_Categoria) REFERENCES Categorie(ID)
        ON DELETE SET NULL
);

CREATE TABLE Clienti (
    ID                INT AUTO_INCREMENT PRIMARY KEY,
    Nome              VARCHAR(50)  NOT NULL,
    Cognome           VARCHAR(50)  NOT NULL,
    Email             VARCHAR(100) NOT NULL UNIQUE,
    Citta             VARCHAR(50),
    AnnoRegistrazione INT NOT NULL
);

CREATE TABLE Ordini (
    ID         INT AUTO_INCREMENT PRIMARY KEY,
    ID_Cliente INT NOT NULL,
    DataOra    DATETIME NOT NULL,
    Stato      VARCHAR(20) NOT NULL DEFAULT 'in attesa',
    FOREIGN KEY (ID_Cliente) REFERENCES Clienti(ID)
        ON DELETE CASCADE
);

CREATE TABLE Dettagli_Ordine (
    ID_Ordine      INT NOT NULL,
    ID_Prodotto    INT NOT NULL,
    Quantita       INT NOT NULL,
    PrezzoUnitario DECIMAL(8,2) NOT NULL,
    PRIMARY KEY (ID_Ordine, ID_Prodotto),
    FOREIGN KEY (ID_Ordine)   REFERENCES Ordini(ID)   ON DELETE CASCADE,
    FOREIGN KEY (ID_Prodotto) REFERENCES Prodotti(ID) ON DELETE CASCADE
);

Inserimento dati

INSERT INTO Categorie (Nome, Descrizione) VALUES
('Smartphone',  'Telefoni cellulari e accessori'),
('Laptop',      'Computer portatili'),
('Audio',       'Cuffie, speaker e accessori audio'),
('Tablet',      'Tablet e accessori'),
('Accessori',   'Cavi, cover e altri accessori');

INSERT INTO Prodotti (Nome, Prezzo, Giacenza, ID_Categoria) VALUES
('iPhone 15',           999.00,  25, 1),
('Samsung Galaxy S24',  849.00,  30, 1),
('Xiaomi 13',           499.00,  40, 1),
('MacBook Air M2',     1299.00,  10, 2),
('Dell XPS 13',         999.00,  15, 2),
('Asus ZenBook 14',     749.00,  20, 2),
('AirPods Pro',         249.00,  50, 3),
('Sony WH-1000XM5',     349.00,  35, 3),
('JBL Charge 5',        179.00,   8, 3),
('iPad Air',            749.00,  18, 4),
('Samsung Galaxy Tab',  499.00,  22, 4),
('Cavo USB-C 2m',        12.00, 200, 5),
('Cover iPhone 15',      19.00, 150, 5),
('Caricatore 65W',       45.00,   0, 5),
('Webcam HD',            89.00,   0, NULL);

INSERT INTO Clienti (Nome, Cognome, Email, Citta, AnnoRegistrazione) VALUES
('Marco',   'Rossi',    'marco.rossi@mail.it',     'Milano',  2020),
('Sara',    'Bianchi',  'sara.bianchi@mail.it',    'Roma',    2021),
('Luca',    'Verdi',    'luca.verdi@mail.it',      'Torino',  2019),
('Anna',    'Ferretti', 'anna.ferretti@mail.it',   'Milano',  2022),
('Giorgio', 'Marino',   'giorgio.marino@mail.it',  'Napoli',  2021),
('Chiara',  'Russo',    'chiara.russo@mail.it',    'Roma',    2023),
('Paolo',   'Conti',    'paolo.conti@mail.it',     'Torino',  2018),
('Elena',   'Galli',    'elena.galli@mail.it',     'Firenze', 2020),
('Matteo',  'Ricci',    'matteo.ricci@mail.it',    'Milano',  2019),
('Giulia',  'Lombardi', 'giulia.lombardi@mail.it', 'Venezia', 2022);

INSERT INTO Ordini (ID_Cliente, DataOra, Stato) VALUES
(1,  '2024-01-05 10:30:00', 'consegnato'),
(2,  '2024-01-12 14:15:00', 'consegnato'),
(3,  '2024-02-01 09:00:00', 'spedito'),
(1,  '2024-02-14 16:45:00', 'spedito'),
(5,  '2024-02-20 11:00:00', 'consegnato'),
(4,  '2024-03-03 08:30:00', 'in attesa'),
(7,  '2024-03-10 13:00:00', 'spedito'),
(8,  '2024-03-15 17:20:00', 'in attesa'),
(9,  '2024-03-18 10:10:00', 'consegnato'),
(10, '2024-03-20 09:45:00', 'in attesa'),
(2,  '2024-03-22 15:00:00', 'spedito'),
(6,  '2024-03-25 12:30:00', 'in attesa');

INSERT INTO Dettagli_Ordine (ID_Ordine, ID_Prodotto, Quantita, PrezzoUnitario) VALUES
(1,  1,  1,  999.00),
(1,  13, 1,   19.00),
(2,  7,  1,  249.00),
(3,  4,  1, 1299.00),
(3,  12, 2,   12.00),
(4,  8,  1,  349.00),
(5,  3,  2,  499.00),
(6,  2,  1,  849.00),
(6,  7,  1,  249.00),
(7,  5,  1,  999.00),
(8,  10, 1,  749.00),
(8,  12, 3,   12.00),
(9,  1,  1,  999.00),
(9,  9,  1,  179.00),
(10, 11, 1,  499.00),
(11, 6,  1,  749.00),
(11, 13, 2,   19.00),
(12, 3,  1,  499.00),
(12, 14, 1,   45.00);