Sto progettando un sistema di database + un'applicazione che si occupa di oggetti di tubature che fanno parte di una rete di rete più grande. Ci sono circa 1000-5000 pipe per ogni rete. Supponiamo che ogni tubo possa avere 2 stati (pulito, sporco).
L'applicazione è in grado di modificare lo stato del tubo dopo che un intervento di manutenzione è stato eseguito su quella conduttura. Ogni lavoro di manutenzione ha un ID e molte altre informazioni dietro di esso. Lo stesso vale per i tubi.
Il mio design per questo problema è il seguente:
table: pipe_status
id maintenance_id pipe_id status
1 1 1 clean
2 1 2 clean
3 1 3 dirty
4 1 4 dirty
...
1000 1 1000 dirty
1001 2 1 clean
1002 2 2 clean
1003 2 3 dirty
1004 2 4 clean
....
2000 2 2000 dirty
Quindi, per ogni lavoro di manutenzione, ogni singola pipa dovrebbe avere un attributo di stato, a seconda che siano stati interessati da questo particolare lavoro di manutenzione o meno. Ciò significa che per ogni lavoro di manutenzione ci sono tante voci di stato quante sono le pipe, con un conseguente aumento della quantità di dati.
Esempio: 20+ griglie con tubi 1000-5000. Al momento sono necessari più di 500 lavori di manutenzione per rete e in crescita, con risultati di 10-50 milioni di voci in questa tabella.
C'è un modo migliore per implementare questo problema in un database? È importante notare che lo stato di ciascuna pipe viene visualizzato nell'applicazione, quindi anche se un intervento di manutenzione interessa solo 5 pipe, gli altri 995 vengono ancora visualizzati nell'app. In questa applicazione l'utente può selezionare un lavoro di manutenzione specifico e vedere i tubi corrispondenti e il loro stato.