2009-05-31 12 views
0

Wird für jedes Attribut in einem ER-Modell eine Datenbankspalte als beste Methode verwendet?Datenbankentwurf, mehrere Attribute in einem einzelnen Feld

Ich mache Wartungsarbeiten an Legacy-Code, und ich sehe eine Menge von mehreren Attributen, sowie Geschäftslogik in einzelne Datenbankspalten gequetscht, und ich frage mich, ob es jemals einen guten Grund dafür gibt.

Beispiel verwendet Präfixe für ganzzahlige Werte, z. B. eine Kunden-ID, bei der die ersten beiden Ziffern den Kundenstatus darstellen, und die folgenden Ziffern die tatsächliche ID des Kunden. So speichern Sie zwei Attribute in einem Feld. Ein anderes Beispiel ist die Verwendung einer negativen Kunden-ID: s für Kunden, die ihr Geschäft beendet haben, wodurch auch Informationen darüber gespeichert werden, ob der Kunde aktiv ist oder nicht. Usw.

Antwort

3

Das Speichern mehrerer Informationen in einer Spalte ist eine Verletzung der ersten normalen Form und wird daher in einer relationalen Datenbank als sehr schlecht angesehen.

+0

Ich uploated, aber im Fall der Kundennummer ist dies vielleicht, wie das Geschäft identifiziert ihre Kunden und TX123 unterscheidet sich von CA123. Ich könnte damit leben, in diesem Fall in eine Spalte zu schreiben. Wäre von der Semantik des Updates abhängig, wenn ein Kunde den Status gewechselt hat usw. –

1

Was Sie dort haben klingt wie eine Anwendung für einen neuen Eintrag in The Daily WTF, kein sinnvolles Datenbank-Design. Bevor Sie so etwas in Betracht ziehen, lesen Sie die Datenbanknormalisierung und sparen Sie sich die Kopfschmerzen.

1

Beim Speichern mehrerer Felder in einer Spalte treten viele Probleme auf. Nehmen wir zum Beispiel an, Sie müssten eine solche Spalte aktualisieren, zuerst verwenden Sie 'ab' als Kundenstatus, dann entscheiden Sie sich, sie auf 'cd' zu aktualisieren. Dies wird sehr unordentlich, wenn mehrere Felder in einer Spalte gespeichert werden.

Sie sollten die Datenbanknormalisierung überprüfen, um dies besser zu verstehen. http://en.wikipedia.org/wiki/1NF

Verwandte Themen