Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2016
    Messaggi
    5

    [mySQL] Correttezza soluzione database

    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;

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    E se volessi ordinare più di un pezzo ?
    Perchè mettere l'email come chiave primaria ? Una email puo' forse essere univoca nel tuo sistema ma non abbastanza da essere la chiave. Se sono cliente da anni e che cambio indirizzo email (succede) dovro' per forza crearli un nuovo account. L'email è come un indirizzo nulla di più.

    Ci sono altre cose ma è tardi.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2016
    Messaggi
    5
    Capisco cosa intendi per quanto riguarda il cliente, mi consigli quindi di inserire un attributo id?
    Per quanto riguarda il carrello in effetti il nome potrebbe essere fuorviante, esso non rappresenta un vero e proprio carrello, bensì un elemento presente all'interno del carrello che è legato ad un determinato cliente. Al momento della visualizzazione della pagina avevo pensato di fare una query di questo tipo: "select prodotto from carrello where cliente=idCliente" e visualizzare quindi tutti i prodotti messi nel carrello dall'utente, è un approccio sbagliato?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.