Progettazione database - Ottimizza le relazioni

4

Sto per iniziare una riprogettazione di un'applicazione, una delle quali è particolarmente fastidiosa per interrogare il database. Intendo ridisegnare il database il più possibile ma la forma dei dati non può cambiare troppo.

Il database ha una tabella principale e altre 10 tabelle che rappresentano ciascuna un tipo di record. La tabella principale ha tutti i dati che i tipi di record hanno in comune. Record ID, DataLogged ecc. Circa 30-40 colonne in totale. Le altre tabelle sono completamente diverse in quanto ogni tipo di record è molto diverso da un altro. Hanno tutti circa 20-30 colonne ciascuno.

La tabella principale ha una colonna chiamata type, che è un int. Tuttavia da nessuna parte fa riferimento a quali tipi di record si riferiscono ai numeri del tipo. Puoi solo capirlo guardando le procedure. La tabella principale deve unirsi a ciascuna tabella dei tipi per consentire la ricerca. Ho aggiunto un'immagine che rappresenta ciò che sto cercando di descrivere.

C'è un modo migliore per creare queste relazioni? Vorrei abbandonare i processi verbose memorizzati usati con ADO.NET e passare a EF. Ho bisogno di pensare a un modo migliore per mettere in relazione i dati in modo che le persone in futuro non abbiano bisogno di elaborare le relazioni analizzando le stored procedure per gli indizi.

    
posta James 05.06.2013 - 22:03
fonte

1 risposta

5

Aggiungi una tabella dei tipi.

TypeID     PK
Type       string

Cambia il tipo in Main to TypeID, rendendolo una chiave esterna al TypeID della tabella Type.

Dove vai da qui dipende da come distinto ogni tipo è. Se l'unica differenza è che i campi variano in qualche modo tra i tipi, e ci sono solo alcuni tipi, potresti avere una singola tabella Tipi, aggiungere un TypeID ad esso e mettere ogni campo per ogni tipo in ogni record (con la comprensione che alcuni campi saranno vuoti per ogni record).

Se i tipi sono molto distinti, puoi mantenere il tuo design attuale, ma aggiungere TypeID a ciascuna delle tabelle Type.

    
risposta data 05.06.2013 - 22:30
fonte

Leggi altre domande sui tag