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 27. Nov 2014
Antwort Antwort
Seite 4 von 6   « Erste     234 56      
Dejan Vu
(Gast)

n/a Beiträge
 
#31

AW: Geschlecht in extra Tabelle speichern?

  Alt 25. Nov 2014, 16:47
Aber wenn man erstmal 7 Joins durchführen muss, um sowas triviales wie Personenstammdaten zusammenzubekommen, dann schätzt man die "unnormale" Form sehr.
Versuchs mal mit Gemütlichkeit Views.

Deine (produktiv-) DB ist fast vollständig 3NF. An die Tabellen will eh keine Sau ran, wegen der 7 Joins. Also basteln wir uns Views, die die ganzen FK-Verknüpfungen kapseln. Wupps, habe ich meine Kunden-View, die mir alles sehr schön darstellt und die 23 Untertabellen wunderbar verbirgt.

Das jetzt noch mit der Auftrags-View verknüpfen, die auch wieder meine Untertabellen und FKs kapselt und -schawuppel- habe ich meine Auftragsübersicht mit einem
Code:
select * 
  from Aufträge a
  join Kunden k on a.KundenID = k.KundenID
where a.AuftragsDatum between :DateFrom and :DateTo
Ist doch sauber, oder?

Normalerweise transferiert man ja historische Daten aus der Produktiv-DB in eine Reporting-DB, wobei man die 3NF zugunsten einfacher Tabellen (star design vs. snowflake) aufgibt. Bei kleineren DBs lohnt sich das nicht, da verwendet man eben Views zur Darstellung. Und -natürlich- wenn das von der Performance nicht hinhaut, dann hat man (ich jedenfalls) eine redundante Tabelle (also eine Art materialized view), die per Trigger auf dem Stand gehalten wird. Das musste ich mal machen, weil die Auftragsübersicht dann doch in Echtzeit verfügbar sein musste (alle 5 Sekunden ein neuer Auftrag rein, ein bestehender abgearbeitet usw.) Aber das ist dann eine *zusätzliche* und redundante Tabelle.

Beim Programmieren kapselst Du ja das rumgefriemele mit dieser blöden Schnittstelle auch in einer Klasse, damit sich der Anwender damit nicht rumschlagen muss. Wieso machst Du das nicht auch in deiner Datenbank?

Geändert von Dejan Vu (25. Nov 2014 um 16:50 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

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

AW: Geschlecht in extra Tabelle speichern?

  Alt 25. Nov 2014, 17:38
Deine (produktiv-) DB ist fast vollständig 3NF. An die Tabellen will eh keine Sau ran, wegen der 7 Joins. Also basteln wir uns Views, die die ganzen FK-Verknüpfungen kapseln. Wupps, habe ich meine Kunden-View, die mir alles sehr schön darstellt und die 23 Untertabellen wunderbar verbirgt.

Das jetzt noch mit der Auftrags-View verknüpfen, die auch wieder meine Untertabellen und FKs kapselt und -schawuppel- habe ich meine Auftragsübersicht mit einem
Code:
select * 
  from Aufträge a
  join Kunden k on a.KundenID = k.KundenID
where a.AuftragsDatum between :DateFrom and :DateTo
Ist doch sauber, oder?
OMG...

Da bin ich doch froh, dass ich für sowas immer BitFelder nehme und diese mit einen Const Array im Code verknüpfe...

Mavarik
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#33

AW: Geschlecht in extra Tabelle speichern?

  Alt 25. Nov 2014, 17:48
Da bin ich doch froh, dass ich für sowas immer BitFelder nehme und diese mit einen Const Array im Code verknüpfe...
*Wofür* nimmmst Du Bitfelder und *was* verknüpfst Du mit einem Const Array im Code?

BTW: Was Du 'OMG' nennst, heißt in der Industrie 'Standard'. Nur mal so

Geändert von TBx (25. Nov 2014 um 20:05 Uhr) Grund: Quote-Tag gefixt
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

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

AW: Geschlecht in extra Tabelle speichern?

  Alt 25. Nov 2014, 20:33
Da bin ich doch froh, dass ich für sowas immer BitFelder nehme und diese mit einen Const Array im Code verknüpfe...
*Wofür* nimmmst Du Bitfelder und *was* verknüpfst Du mit einem Const Array im Code?
Ein Beispiel könnte sein!:
Delphi-Quellcode:
Var
  Bitfeld : Byte;
begin
  if (BitFeld and $80) = $80
    then Gender := Sprache[AktSprache,ID_Herr]
    else Gender := Sprache[AktSprache,ID_Frau];

  if (BitFeld and $40) = $40
     then Kunde := true
     else Kunde := false;
end;
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#35

AW: Geschlecht in extra Tabelle speichern?

  Alt 25. Nov 2014, 20:40
Und dann hast Du Deinen Code mal nicht zur Hand, willst in der DB etwas ändern und siehst nur "komische Zahlen". Herzlichen Glückwunsch.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

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

AW: Geschlecht in extra Tabelle speichern?

  Alt 25. Nov 2014, 20:58
Und dann hast Du Deinen Code mal nicht zur Hand, willst in der DB etwas ändern und siehst nur "komische Zahlen". Herzlichen Glückwunsch.
Datenbank ändern? Die ist sowieso verschlüsselt. Da hat keiner was dran zu suchen!
  Mit Zitat antworten Zitat
vagtler

Registriert seit: 9. Jul 2010
Ort: Köln
667 Beiträge
 
Delphi 2010 Professional
 
#37

AW: Geschlecht in extra Tabelle speichern?

  Alt 26. Nov 2014, 07:12
Genau. Wartbarkeit ist was für Pussies.
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#38

AW: Geschlecht in extra Tabelle speichern?

  Alt 26. Nov 2014, 07:59
Es soll exotische Anwendungen geben, die sogenannte 'Reportingframeworks' verwenden. Gewiss, für altgediente Profis wie Mavarik ist das Kinderkram, aber Amateure wie -sagen wir- SIEMENS setzen doch tatsächlich diese Dinger ein. Da wäre es nun wirklich sinnvoll, wenn man in der Datenbank auch eine Präsentationsschicht hätte (also diese schwachsinnigen VIEW Dinger zum Beispiel), welche einem die kodierten Daten so aufbereitet, daß man die Daten mit einem Reporting-Tool deskriptiv darstellen kann (will sagen: 'Mann' statt false z.B.).

Auch absolute Nischenprodukte, wie z.B. EXCEL, könnten davon profitieren.

Nebenbei sind so bitkodierte Eingeschaften nicht gerade geeignet, um nach ihnen zu selektieren. Es geht zwar, ist aber mühselig.

Genau. Wartbarkeit ist was für Pussies.
Yeah! Gibt eben noch richtige Männerprogrammierer.
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.736 Beiträge
 
Delphi 6 Enterprise
 
#39

AW: Geschlecht in extra Tabelle speichern?

  Alt 26. Nov 2014, 09:09
und eine Kodierung wie 'M' oder 'F' ist nun totaler Quark, weil dadurch die Tabelle nicht mir in 3NF ist.
Wollte mich eigentlich gar nicht an der Diskussion hier beteiligen, weil glaub ich die ursprüngliche Frage aus dem Blick geraten ist, aber wollte hier nochmal nachhaken. 'M' oder 'F' können doch die Primärschlüssel in der Geschlechter-Tabelle sein. Dann können die doch als Fremdschlüssel in irgendeiner andferen Tabelle stehen. Da kenn ich minestens 3 Software-Produkte (die nicht von uns sind, aber wo ich täglich mit arbeite und die auch im HR-Bereich zum Standard gehören) die sowas gelegentlich verwenden. Wo steht geschrieben, das Primärschlüssel immer Zahlen sein müssen. Und warum ist das dann nicht 3.NF.

Oder hab ich nur die Bemerkung falsch verstanden?


Aber zurück zur Ausgangsfrage. War die nicht sowas wie: Geschlecht in der Personen-Tabelle mitspeichern oder separate PersonenGeschlecht-Tabelle führen, oder?
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

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

AW: Geschlecht in extra Tabelle speichern?

  Alt 26. Nov 2014, 09:32
Was bei solchen Diskussionen auch gerne aus den Augen gelassen wird ist, daß es unterschiedliche Schwerpunkte bei der Entwicklung von Software gibt. Frank (Mavarik) und ich, wir entwickeln Branchen-Software. Diesese Pakete werden von uns seit Jahren (Jahrzehnten) weiterentwickelt. Wir haben gar kein interesse daran, daß "andere" in der Datenbank rumspielen. Für mich ist es daher auch leichter alles im Quellcode zu definieren als in der Datenbank. Schon alleine wegen den Kommentaren, die ich im Quellcode einfügen kann. Ausserdem ist die Updatemöglichkeit um einiges einfacher, da ich mich nicht darum kümmern muss, ob bestimmte Definitionen in der Datenbank bestehen oder geändert wurden.

Auf der anderen Seite gibt es Firmen, die den Schwerpunkt auf die Datenbank setzen und immer mal wieder Software schreiben lassen um die Daten auszuwerten oder zu BEarbeiten. Das ist natürlich ein ganz anderer Ansatz. Denn in dem Fall wird ein Großteil der Geschäftslogik in der Datenbank definiert.

Fazit: Es gibt nicht die "eine optimale Lösung". Unterschiedliche Ansätze -> unterschiedliche Lösungen.
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 6   « Erste     234 56      


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 04:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz