AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Geschlecht in extra Tabelle speichern?
Thema durchsuchen
Ansicht
Themen-Optionen

Geschlecht in extra Tabelle speichern?

Ein Thema von AlexII · begonnen am 25. Nov 2014 · letzter Beitrag vom 26. Nov 2014
Antwort Antwort
Seite 2 von 3     12 3      
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#1

AW: Geschlecht in extra Tabelle speichern?

  Alt 25. Nov 2014, 10:32
Ich habe für solche Daten eine eigene Tabelle angelegt - jedoch nicht nur für eine Wertegruppe.
Diese kann man dann auch erweitern - zum Beispiel mehrsprachig.
Wenn ich auf solche Konstrukte stoße, stellen sich mir jedes Mal die Nackenhaare auf.
Ich verwende für solche Dinge immer eigene Tabellen. Über den Platzbedarf hab ich mir dabei nie Gedanken gemacht. Ein ordentliches Datenbankdesign ist mir deutlich wichtiger, als ein paar gesparte Byte.
Bei der Tabelle kann man dann auch problemlos weitere Felder anfügen für verschiedene Zwecke:
IDBezeichnungKuerzelAnrede
1männlichmSehr geehrter Herr
2weiblichwSehr geehrte Frau
Außerdem hat der Kunde so die Möglichkeit die Texte nach eigenem Gusto anzupassen.
Stimmt
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.312 Beiträge
 
Delphi 12 Athens
 
#2

AW: Geschlecht in extra Tabelle speichern?

  Alt 25. Nov 2014, 10:33
Ich habe für solche Daten eine eigene Tabelle angelegt - jedoch nicht nur für eine Wertegruppe.
Diese kann man dann auch erweitern - zum Beispiel mehrsprachig.
Wenn ich auf solche Konstrukte stoße, stellen sich mir jedes Mal die Nackenhaare auf.
Ich verwende für solche Dinge immer eigene Tabellen. Über den Platzbedarf hab ich mir dabei nie Gedanken gemacht. Ein ordentliches Datenbankdesign ist mir deutlich wichtiger, als ein paar gesparte Byte.
Bei der Tabelle kann man dann auch problemlos weitere Felder anfügen für verschiedene Zwecke:
IDBezeichnungKuerzelAnrede
1männlichmSehr geehrter Herr
2weiblichwSehr geehrte Frau
Außerdem hat der Kunde so die Möglichkeit die Texte nach eigenem Gusto anzupassen.

Damit fällst du aber direkt auf die Nase, wenn dein Programm mehrsprachig werden soll.

Ich mach es immer so, wie Sir Rufo es vorgeschlagen hat. Einfach eine ID festlegen. Im Programm wird dann schon das Korrekte angezeigt.
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.403 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Geschlecht in extra Tabelle speichern?

  Alt 25. Nov 2014, 09:47
lt. Normalisierung sollte das schon in eine eigene Tabelle. Würde ich persönlich nur in bestimmten Fällen machen: Wenn das Geschlecht nur eine optionale Angabe wäre, die in den seltensten Fällen angegeben wird und es wirklich um das letzte Byte ginge.

Ansonsten kauft man sich da nur eine aufwändigere SQL Abfrage ein.

Ich würde eine eigene Tabelle anlegen. Stell Dir nur vor, die Bezeichnung soll später geändert werden (z.B. "männlich" und "weiblich" statt "Mann" oder "Frau"),
das ist primär eine Sache des Views - nicht der Datenbank.


ist es dann günstiger, genau 2 Datensätze ändern zu müssen oder u.U. ein paar Millionen?
und dazu dann gegenrechnen wie viel Arbeitszeit vergeudet wird um komplexere SQL-Abfragen zu entwickeln und zu pflegen? Achtung nicht übersehen!


Grundsätzlich sehe ich das wie SirRufo: In der DB landet ein "Enum" das in der Anwendung dann ausgewertet wird. Werden Fremddatenschnittstellen angeboten, dann kommt ein CheckConstraint auf die Spalte, wenn primär über die eigene Anwendung Daten rein kommen, kann man die Prüfung getrost auch dem ORM überlassen.

Aber: Ein allgemeines richtig oder falsch wird es auf die Frage nie geben....
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Geschlecht in extra Tabelle speichern?

  Alt 25. Nov 2014, 10:03
Nun, von der Theorie her wäre eine eigene Tabelle nicht falsch, insbesonders wenn man an die Nichtvergabe oder eben Transgender denkt.
Platz sparen? die paar Bytes machen den Kohl nicht fett.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: Geschlecht in extra Tabelle speichern?

  Alt 25. Nov 2014, 10:06
@Lemmy

Wenn ich Fremdaten unterstützen muss, dann nehme ich einen entsprechenden Value-Converter.
Delphi-Quellcode:
TFooConverter = class
public
  function ConvertFrom( Gender : TFooGender ) : TGender;
  function ConvertTo( Gender : TGender ) : TFooGender;
end;
TFooConverter ist dann der einzige Ort in der Anwendung, der die Übersetzung kennt. Ich brauche also nur an einer Stelle die Übersetzung definieren.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.403 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Geschlecht in extra Tabelle speichern?

  Alt 25. Nov 2014, 12:02
@Lemmy

Wenn ich Fremdaten unterstützen muss, dann nehme ich einen entsprechenden Value-Converter.
da dachte ich mehr an Schnittstellen auf die du keinen Einfluss hast, sprich anderen schieben dir Daten rein...

das ist primär eine Sache des Views - nicht der Datenbank.
Das ist Ansichtssache: Die Datenbank stellt einen View für die Anwendung bereit.
könnte es sein, dass wir aneinander vorbeireden? Als Views meinte ich nicht die DB-Views sondern die Visualisierung der Daten. WEnn wir nicht aneinander vorbeireden: Ein Interessanter Standpunkt - so habe ich das noch nie gesehen....
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#7

AW: Geschlecht in extra Tabelle speichern?

  Alt 25. Nov 2014, 10:09
Man kann es auch so sehen: Es sollte eigentlich keine Anfragen geben, bei dem der Enumwert direkt als String vom Nutzer kommt. Also kann man auch problemlos eine ID benutzen (vllt. einen Char für adhoc-Anfragen). Die Übersetzungstabelle kann man dann trotzdem haben, auch wenn man sie nur einmal ausliest.

das ist primär eine Sache des Views - nicht der Datenbank.
Das ist Ansichtssache: Die Datenbank stellt einen View für die Anwendung bereit.
Idealerweise zeigt die Datenbank einer Anwendung Strings, einer anderen deren erwartete ID und der nächsten das entsprechende chinesische Schriftzeichen.

Geändert von BUG (25. Nov 2014 um 10:14 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.165 Beiträge
 
Delphi 10.3 Rio
 
#8

AW: Geschlecht in extra Tabelle speichern?

  Alt 25. Nov 2014, 10:34
Wieso INT64?
OK Kommt natürlich auf die Datenbank an!
Welchen Wertebereich hat bei Dir ein AutoInc Feld?

Mindestens aber ein INT32!

Also ist mein Byte für 0=Nichtbelegt 1=Mann 2=Frau 3=Unbestimmt 4=Im Wandel 5=Mann unter 18 6=Frau unter 18 7=Reserviert...

Deutlich platzsparender.
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#9

AW: Geschlecht in extra Tabelle speichern?

  Alt 25. Nov 2014, 10:42
Also ist mein Byte für 0=Nichtbelegt 1=Mann 2=Frau 3=Unbestimmt 4=Im Wandel 5=Mann unter 18 6=Frau unter 18 7=Reserviert...
Und da ist sie, die Verletzung der 1. NF
Das Alter im Geschlecht zu speichern halte ich für keine gute Idee. In relationalen Datenbanken würde ich, wenn ich nicht gerade Dokumente speichere, niemals zwei Werte in eine Spalte schreiben.
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.165 Beiträge
 
Delphi 10.3 Rio
 
#10

AW: Geschlecht in extra Tabelle speichern?

  Alt 25. Nov 2014, 10:45
Also ist mein Byte für 0=Nichtbelegt 1=Mann 2=Frau 3=Unbestimmt 4=Im Wandel 5=Mann unter 18 6=Frau unter 18 7=Reserviert...
Und da ist sie, die Verletzung der 1. NF
Das Alter im Geschlecht zu speichern halte ich für keine gute Idee. In relationalen Datenbanken würde ich, wenn ich nicht gerade Dokumente speichere, niemals zwei Werte in eine Spalte schreiben.
OK mit "Im Wandel" und "unter 18" war eigentlich auch nur als Witz gedacht... 1:0 für Dich bei "unter 18" habe ich nicht nachgedacht!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:08 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