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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top