Ho una domanda di progettazione in formato db che, ne sono sicuro, è stata ampiamente trattata, ma non riesco a trovare già una buona risposta.
Il problema è come collegare in modo efficiente un singolo corso scolastico a una raccolta di libri di testo, un corso può avere 0 libri e può avere 10. Il problema qui è che più corsi possono usare lo stesso libro di testo pure.
Il mio primo pensiero è stato quello di includere le tabelle del libro di testo PK come FK nella tabella dei corsi. Quindi la tabella dei corsi ha un ID composito PK ovviamente id e un libro di testo. Il problema con questo approccio è che la tabella dei corsi potrebbe potenzialmente avere un sacco di colonne, e quindi sto ripetendo l'intera riga del corso per ogni aggiunta di un libro di testo, oltre a dover impostare un libro di testo falso per corsi che non hanno un libro di testo.
Corsi di
- course_id
- COURSE_NAME
- FK textbook_id
- PK (course_id, textbook_id)
testo
- textbook_id
- textbook_name
Il mio prossimo pensiero era di avere una tabella con 10 colonne per i libri di testo, che io uso per collegare un corso a tutti i libri di testo. Ma, non sono sicuro che ci sia un approccio migliore (questo finirà per usare meno spazio), quando penso a questo penso perché non hanno le colonne da manuale1, da manuale2 nella tabella dei corsi, in primo luogo.
Corsi di
- PK course_id
- COURSE_NAME
- FK textbooks_ids
course_textbook
- FK course_id
- FK textbook_1
- FK textbook_2
- FK textbook_3
- FK textbook_4
testo
- ISBN
- textbook_name
Un po 'di background, usando MySql, Hibernate ORM e scrivendo un indicizzatore di ricerca separato.
Qualcuno ha suggerimenti su un approccio o pensieri migliori su quale di questi due approcci è migliore?
Grazie in anticipo per l'aiuto