• User Newbie

    [mysql] Consiglio su progettazione database

    E' giunta l'ora di provare a scrivere il mio primo sito dinamico . Ho deciso per un sito di recensioni musicali, con profili degli artisti e degli album. Nella progettazione del db ho avuto da subito qualche dubbio. Mi spiego. Ho una tabella "generi" con associazione N-N con 3 tabelle: artisti, album, utenti (per i generi preferiti).

    Come è meglio agire in questi casi?

    • Creo 3 tabelle separate: generi_artisti, generi_album, generi_utenti
    • Creo un'unica tabella con un solo id per le tre tabelle e un campo che memorizza la tabella a cui ci si riferisce (idgenere, idaltro, tabella); dove idaltro può riferirsi alla chiave primaria di una delle tre tabelle
    • Creo un'unica tabella con 3 chiavi esterne(oltre a quella ovvia con riferimento alla tabella generi) per le 3 tabelle (idgenere, idartista, idalbum, idutente);

    Stessa dubbio si ripresenta per i commenti e i voti! Un commento può essere riferito a un artista (nella pagina delle relativo profilo di quest'ultimo), a un utente o a una recensione. Il voto può essere dato a un album o alla recensione.

    Vi sarei grato se mi chiariste le idee, grazie mille


  • Super User

    Ciao 🙂

    benvenuto nel forum 😉

    Io ragionerei diversamente, pensando alle "cose" da catalogare.

    Creerei quindi tabelle relative a artisti, album, utenti e generi.

    Poi in ogni tabella metterei le relazioni con i generi.


  • User Newbie

    @claudioweb said:


    Ovvio che artisti, album, utenti e generi sono entità(e tabelle) separate. Il mio dubbio era sul come spezzare le assoziazioni N-N che legano queste entità. Sul database ci sono già le tabelle generi_artisti, generi_album e generi_preferiti (per gli utenti) che legano la tabella generi con le altre.
    Quindi mi dai conferma che questa sia la soluzione migliore?