Ciao a tutti, sto creando il database del mio progetto di programmazione web per l'università e volevo chiedervi se la mia soluzione poteva essere valida, cercando una conferma da voi che siete più esperti per quello che ho fatto, in particolare per quanto riguarda il carrello, nella quale ho messo come attributi due chiavi esterne, una che riguarda l'utente e una che riguarda il prodotto all'interno del carrello stesso, in modo da poter cercare i prodotti relativi all'utente, non so se scrivere la struttura del sito, in effetti mi sembra quasi ovvio il doverlo scrivere, mi affido comunque a prossimi post nel caso ce ne sia bisogno. Grazie mille per la vostra attenzione.

Questa è la soluzione da me proposta:
codice:
CREATE DATABASE if not exists Music;
use Music;

CREATE TABLE IF NOT EXISTS Music.Prodotto(
idProdotto int primary key,
sconto int not null,
prezzo double not null,
prezzo_scontato double not null
)
ENGINE=InnoDb;


CREATE TABLE IF NOT EXISTS Music.Ordine(
id int primary key,
cliente varchar(45) not null,
prodotto int not null,
stato_spedizione varchar(20),
stato varchar(10),
prezzo double not null,
data_invio date not null,
FOREIGN KEY (cliente) REFERENCES Cliente(email) on update cascade 
                                                on delete cascade,
                                                
FOREIGN KEY (prodotto) REFERENCES Prodotto(idProdotto) on update cascade 
                                                       on delete cascade
)
ENGINE=InnoDb;


CREATE TABLE IF NOT EXISTS Music.Accessori(
id int primary key,
pezzi int not null,
tipo varchar(20) not null,
nome varchar(45) not null,
descrizione text not null,
immagine text not null,
valutazione int not null,
num_valutazioni int not null,
FOREIGN KEY (id) REFERENCES Prodotto(idProdotto) on update cascade 
                                                 on delete cascade
)
ENGINE=InnoDb;


CREATE TABLE IF NOT EXISTS Music.Album(
id int primary key,
pezzi int not null,
anno int not null,
genere varchar(45) not null,
titolo varchar(45) not null,
descrizione text not null,
immagine text not null,
artista varchar(45) not null,
canzoni text not null,
valutazione int not null,
num_valutazioni int not null,
FOREIGN KEY (id) REFERENCES Prodotto(idProdotto) on update cascade 
                                                 on delete cascade


)
ENGINE=InnoDb;


CREATE TABLE IF NOT EXISTS Music.Carrello(
cliente varchar(45) not null,
prodotto int not null,
FOREIGN KEY(cliente) REFERENCES Cliente(email) on update cascade 
                                               on delete cascade,
FOREIGN KEY(prodotto) REFERENCES Prodotto(idProdotto) on update cascade 
                                                      on delete cascade


)
ENGINE=InnoDb;


CREATE TABLE IF NOT EXISTS Music.CartaCredito(
titolare varchar(45) not null,
numero varchar(16) not null,
cvv varchar(3) not null,
cliente varchar(45) not null,
scadenza date not null,
FOREIGN KEY (cliente) REFERENCES Cliente(email) on update cascade 
                                                on delete cascade
)
ENGINE=InnoDb;


CREATE TABLE IF NOT EXISTS Music.Cliente(
num_telefono varchar(10) not null,
pass varchar(10) not null,
email varchar(45) primary key,
nome varchar(45) not null,
cognome varchar(45) not null,
indirizzo varchar(80) not null,
cod_fiscale varchar(16) not null,
cap varchar(5) not null,
città varchar(50) not null,
data_nascita date not null
)
ENGINE=InnoDb;


CREATE TABLE IF NOT EXISTS Music.RecensioneUtente(
valutazione int not null,
prodotto int not null,
titolo varchar(45) not null,
commento text not null,
cliente varchar(45) not null,
FOREIGN KEY (cliente) REFERENCES Cliente(email) on update cascade 
                                                on delete cascade,
FOREIGN KEY (prodotto) REFERENCES Prodotto(idProdotto) on update cascade 
                                                       on delete cascade
)
ENGINE=InnoDb;


CREATE TABLE IF NOT EXISTS Music.RecensioneProfessionale(
id int not null,
titolo varchar(45) not null,
valutazione int not null,
immagine text not null,
testo text not null
)
ENGINE=InnoDb;