Tadels MySQL tra più di una relazione
-
21-12-2019 - |
Domanda
Ecco le strutture dei miei due tavoli (chiavi primarie in tasti audaci ed estranei in testo italico)
Service_agrements ( ID , client_id, importo, data_begin, durata, * Servizi_id_1 *, * Services_id_2 *, * Services_id_3 *, * Services_id_4 *) Servizi ( ID , Date_Provisto, Descrizione, Staff_person)
L'idea alla base dei tavoli è quella basata su un accordo che la società fornisce un servizio fino a quattro volte. Così visto, i quattro campi di Service_agrements Table (Services_id_1, ...) ha quattro relazioni separate one-to-one separate con le tabelle dei servizi (campo ID). Mi sembra un po 'insolito, perché di solito ho visto solo una relazione tra due tavoli. Quindi so se questo è insolito o è ok, se è insolito, qual è la soluzione migliore (senza fusione dei campi dei servizi ai service_agrements. Poiché le tabelle dei servizi hanno anche alcuni record in servizio fornito senza un accordo.) .
Soluzione
La struttura potrebbe essere persino più bella:
.Service_agrements ( ID , client_id, importo, data_begin, durata);
Servizi ( ID , Date_Provisto, Descrizione, Staff_person);
Service_agrements_services ( ID , Type Enum (Service1, Service2 etc), service_agrement_id , service_id );
Nuova tabella, service_agreements_services Aggiungi una relazione molte a una tra servizio_agrement e servizi;
Vantaggi :
1) Per ogni nuovo servizio che fornisci ci saranno nuovi inserimenti (di solito meno in alto rispetto all'aggiornamento)
2) Puoi anche fornire più grandi servizi :)
3) Le relazioni tabelle diventano più semplici.
Grazie