Semplificazione schema database

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
radrad
Prode Principiante
Messaggi: 44
Iscrizione: mercoledì 8 febbraio 2012, 19:09

Semplificazione schema database

Messaggio da radrad »

Ho questo schema di database:

Codice: Seleziona tutto

workers(id,descrizione)
services(id,descrizione,ore, minuti)
jobs(id,ore,minuti,note,worker_id,service_id)
worker_service_pivot(worker_id, service_id)

Codice: Seleziona tutto

workers -> 0:n -> jobs
services -> 0:n -> jobs
workers -> 0:n -> worker_services_pivot
services -> 0:n- > worker_services_pivot
Come potete immaginare c'è una ridondanza di indici e una difficoltà a mantenere sincronizzate le tabelle.
Questi legami mi servono tutti, ma forse si può semplificare ed usare JOBS per fare lo stesso lavoro di worker_service_pivot?

Mi potete aiutare? Grazie
Avatar utente
DoctorStrange
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2854
Iscrizione: mercoledì 14 ottobre 2015, 9:33
Desktop: Gnome3
Distribuzione: Ubuntu 22.04 LTS Jammy Jellyfish
Sesso: Maschile
Località: Roma, Italia

Re: Semplificazione schema database

Messaggio da DoctorStrange »

Non mi è chiara la sintassi che usi per indicare lo schema delle tue tabelle. In ogni caso sembra realmente worker_service_pivot abbia i medesimi campi di jobs. In questo caso, non vedo alcuna informazione aggiuntiva che la tabella worker_service_pivot aggiunga. In questo caso, io questa tabella la eliminerei, ma prima assicurati che non ci siano dati che perderesti.
Lucio C
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 363
Iscrizione: venerdì 10 dicembre 2021, 18:33
Desktop: fvwm
Distribuzione: (X)Ubuntu20@home; openSUSE42.3@work
Sesso: Maschile
Località: Paneropoli

Re: Semplificazione schema database

Messaggio da Lucio C »

Stiamo parlando di mysql o MariaDB o affini ?
Non capisco bene il senso di quelle tabelle e a che "indici" ci si riferisca (quelli "nativi" delle tabelle, o alcune di quelle tabelle sono "indici ad hoc" ?)

Se le tabelle con i dati veri sono indipendenti e le si vuole vedere insieme perche' non usare dei "join" o "left join" (magari facendoli vedere come delle "view") ovviamente ottimizzando gli indici delle tabelle. Il comando "explain select" aiuta molto a ottimizzare la scelta degli indici ... sorprendentemente (o no) avere dei buoni indici aiuta perfino per tabelle piccole.
The reasonable man adapts himself to the world: the unreasonable one persists in trying to adapt the world to himself. Therefore all progress depends on the unreasonable man. (G.B. Shaw)
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 7 ospiti