![]() |
AW: Geschlecht in extra Tabelle speichern?
Zitat:
|
AW: Geschlecht in extra Tabelle speichern?
Zitat:
Das Problem habe ich aber auch nicht, weil meine Software nur im Deutschsprachigen Raum eingesetzt wird (und es aus verschiedenen Gründen sehr unwahrscheinlich ist, dass sich das mal ändert). Allerdings habe ich teilweise noch ein Feld "sprache_id" um die Texte in diversen Sprachen durch den User pflegen zu können. Beim Beispiel mit dem Geschlecht wäre das z.B. um die Anrede für einen spanischen Kunden auf der Rechnung in seiner Landessprache machen zu können. In dem Fall muss natürlich Fallback-Mechanismen einbauen, für den Fall dass das Geschlecht in der gewünschten Sprache nicht gepflegt ist. |
AW: Geschlecht in extra Tabelle speichern?
Zitat:
Vieleicht habe ich mich missverständlich ausgedrückt. Ich mache es in dem Sinne so wie du. Eine ID wird festgelegt 1=Mann 2=Frau. In der Datenbank steht also nur (0,1,2) Im Programm ist fest hinterlegt (in verschiedenen Sprachen) welches Wort zur ID angezeigt werden muss. |
AW: Geschlecht in extra Tabelle speichern?
Zitat:
|
AW: Geschlecht in extra Tabelle speichern?
Zitat:
Ein Vertipper in der Datenbank/Anwendung ist doch nicht tragisch. Wenn in der Version 1 das Zeichen N für männlich genutzt wurde und nun in Version 1.1 das korrigiert werden soll nach M, dann baue ich das einfach in die Anwendung mit ein, dass eben das Zeichen N und M eben männlich bedeuten. Das ist auch relativ simpel, denn bei der Erzeugung des Wertes, wird dann aus dem N ein M gemacht. Fertig ist die Laube und alles wird wieder schick. Das Hauptproblem besteht in den meisten Anwendungen, dass einfach nur der repräsentierende Wert (der ist ohne Kontext) verarbeitet wird und nicht im Zusammenhang mit dem Kontext.
Delphi-Quellcode:
Benutzt man das aber mit dem Kontext zusammen, wird es klarer und einfacher im Umgang, weil man auch eine Interpretation mit einfliessen lassen kann (String mit 1 Zeichen, als Uppercase, 'N' => 'M')'M' <> 'm' <> 'N' <> 'n'
Delphi-Quellcode:
Generell ist und bleibt es natürlich eine Frage der Anwendung und des allgemeinen Kontextes, ob man eine erweiterbares oder festes Geschlechtsmerkmal benötigt. Gemeinsam bleibt allerdings der Kontext, denn nur so wird aus einem Wert eine verwertbare Information.TGender.Create( 'M' ) = TGender.Create( 'm' ) = TGender.Create( 'N' ) = TGender.Create( 'n' ) Wenn die Information erweiterbar ist, dann habe ich auch einen Foreign Key und über den wird das Update gemacht. Dann trage ich das an einer Stelle ein und die gesamte Datenbank ist wieder im Lot |
AW: Geschlecht in extra Tabelle speichern?
Zitat:
Zitat:
|
AW: Geschlecht in extra Tabelle speichern?
Das Geschlecht ist aus konservativer Sicht eine binärinformation: Mann/ kein Mann
bzw. aus feministisch-konservativer Sicht: Frau/keine Frau. Für ewiggestrige Katholikenmuslime (oder wahlweise auch osteuropäische Enggestirne) würde es also reichen, das Geschlecht als Bit/Boolean abzulegen. Das ist die zweitkompakteste* Art, diese Information zu verpacken. Das hat natürlich den entscheidenden Nachteil, das eine Erweiterung des eigenen Horizontes nur mit erheblichem Aufwand bei der Änderung DB-Struktur möglich ist. Da es sich hier -allgemein gesehen- um ein qualitatives** Merkmal handelt (ich bin 'A', 'B', 'C' oder 'D') würde ich auch zu einer einfachen Kodierung raten, dessen Präsentation (also Text) in einer separaten Tabelle untergebracht ist. Diese Kodierung ist ja unabhängig von der Information an sich und macht den Code nur lesbar. Hier würde ich allerdings davon abraten, in dieser 'Geschlechtertabelle' gleich noch Anrede etc. unterzubringen: Das gehört dort nicht hin: Anreden haben ja nur indirekt etwas mit dem Geschlecht zu tun, sondern eher mit dem Status der Person. Ob man hier Bytes oder Integer verwendet, ist eigentlich wurscht, weil die paar Bytes Speicherplatz den Kohl auch nicht fett machen. Besser wäre eine gleichförmige Behandlung aller qualitativer Merkmale über alle Tabellen. und eine Kodierung wie 'M' oder 'F' ist nun totaler Quark, weil dadurch die Tabelle nicht mir in 3NF ist. (*) die kompakteste Art wären zwei Tabellen, für jedes Geschlecht eine eigene Tabelle. (**) im Gegensatz zu quantitativen Merkmalen, wie Alter, Adresse etc. |
AW: Geschlecht in extra Tabelle speichern?
Zitat:
|
AW: Geschlecht in extra Tabelle speichern?
Sobald Du mit einem Reportingtool drüber musst, wirst Du glücklich sein, wenn Du nicht zig Subreports erzeugen musst. Eine vernünftige Abwägung der Vor- und Nachteile der Normalisierung solltest du schon vornehmen (ich mach mich gerade unbeliebt, ich weiss). Aber wenn man erstmal 7 Joins durchführen muss, um sowas triviales wie Personenstammdaten zusammenzubekommen, dann schätzt man die "unnormale" Form sehr. Sowohl als Supportmitarbeiter, als auch jemand der mit der weiteren Nutzung der Daten in statistischen Auswertungen à la QlikView und Reportingtools wie Crystal (heisst das noch so?) beschäftigt ist.
Sherlock |
AW: Geschlecht in extra Tabelle speichern?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:51 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz