Tabelle relazionali "oggetto"/"proprietà" di SQL Server che si collegano ad altre tabelle
-
13-09-2019 - |
Domanda
Scusate il titolo scadente, non riesco a pensare al termine corretto.
Ho una struttura di database che rappresenta oggetti, gli oggetti hanno tipi e proprietà.
Solo alcune proprietà sono disponibili per determinati tipi.
cioè.
Tipi: casa, automobile
Proprietà: colore, velocità, indirizzo
Gli oggetti di tipo automobile possono avere sia proprietà di colore che di velocità, ma gli oggetti di tipo Casa possono avere solo colore e indirizzo.Il valore per la combinazione di oggetto, tipo e proprietà viene archiviato in una tabella dei valori.
Tutto questo funziona, le relazioni rafforzano bene quanto sopra.
Il mio dilemma è che ho un'altra tabella, ad esempio Indirizzi.Questa tabella ha AddressID.
Voglio unire in qualche modo la mia tabella degli indirizzi alla tabella dei valori degli oggetti.c'è un modo pulito per raggiungere questo obiettivo??
[AGGIORNAMENTO] - Più dettaglio
Ho già 5 tavoli.cioè.
Oggetto
Proprietà
Tipi di oggetto
ObjectPropertyValues
ObjectTypeProperties
Queste tabelle hanno relazioni che bloccano quali valori di proprietà possono essere assegnati a ciascun tipo di oggetto.
Un oggetto potrebbe avere il nome "Ferrari" e il tipo sarebbe "car" e poiché il tipo è car posso impostare un valore per la proprietà color.
Il valore però è numerico e voglio potermi unire a una tabella di codici colore per abbinare l'ID.
Soluzione
Innanzitutto, una "relazione" nei database relazionali è una tabella e non si riferisce alle relazioni tra tabelle.Una relazione definisce il modo in cui i dati sono correlati a una chiave.
Nella modellazione relazionale, ogni entità è normalizzata, quindi un modello per te sarebbe composto da 4 tabelle:
Auto (colore-FK, indirizzo-FK)
Casa (colore-FK, velocità)
Colore (Colore-PK)
Indirizzo (Indirizzo-PK, Indirizzo-Dati)
Nel modello relazionale, le automobili non sono case e in genere sarebbe estremamente improbabile modellarle nella stessa tabella.
Si potrebbe obiettare che, in effetti, i colori validi per le case e le automobili sono molto diversi (poiché le vernici non sono equivalenti), e quindi non si combinerebbero mai le due tabelle basate sul colore in un'applicazione del mondo reale.
Possibili altre considerazioni sulla modellazione potrebbero riguardare il luogo in cui l'auto è parcheggiata, ad es.un FK per una casa o un FK per un indirizzo: problema interessante qui.Quindi, se avessi le chiavi di automobili e case, potrebbero entrambe far parte di portachiavi, nel qual caso probabilmente modelleresti con tabelle di collegamento che rappresentano le chiavi.