AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Wie Datenbankstruktur aufbauen ?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie Datenbankstruktur aufbauen ?

Ein Thema von RWarnecke · begonnen am 6. Aug 2017 · letzter Beitrag vom 6. Aug 2017
Antwort Antwort
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#1

AW: Wie Datenbankstruktur aufbauen ?

  Alt 6. Aug 2017, 09:34
rechtfertigt nicht zwingend eine separate Tabelle mit den Daten von Tab 3 mit einer 1:1 Beziehung zur Kundentabelle. Das lässt ich auch noch problemlos in einer einzigen Tabelle mit entsprechenden NULL-Feldern realisieren.
Welche Nachteile oder Vorteile hat eine separate Tabelle gegenüber wenn ich alles in eine Tabelle packe ?

Bei den Checkboxen kommt es darauf an, ob du nach einzelnen Checkbox-Werten auswerten wills oder nicht. Im letzteren Fall kann man die auch als Bitmuster-Feld hinterlegen um Platz zu sparen. Einfacher und bequemer sind allerdings einzelne Bool-Felder. Je nach Datenbank kann man auch über Array-Felder nachdenken.
Die Checkboxen sind reine Multiple-Choice Bereiche. Ich muss nur den Status der Checkbox speichern, sobald er sich ändert und natürlich auch wieder anzeigen, wenn die Maske aufgerufen wird.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.688 Beiträge
 
Delphi 12 Athens
 
#2

AW: Wie Datenbankstruktur aufbauen ?

  Alt 6. Aug 2017, 10:27
Welche Nachteile oder Vorteile hat eine separate Tabelle gegenüber wenn ich alles in eine Tabelle packe ?
Vorteil: keine Verschwendung von Speicherplatz. Ist aber wohl nur dann relevant, wenn der Anteil der Tab3-Records klein ist gegenüber der Anzahl der Kundenrecords.
Nachteil: erhöhter Verwaltungsaufwand beim Abspeichern.

Beim Lesen würde man das wohl eh über einen JOIN realisieren, der dann faktisch so aussieht, als wären alle Felder in einer Tabelle.

Also, solange das Vorteils-Argument zu vernachlässigen ist, würde ich eine einzige Tabelle nehmen.

Die Checkboxen sind reine Multiple-Choice Bereiche. Ich muss nur den Status der Checkbox speichern, sobald er sich ändert und natürlich auch wieder anzeigen, wenn die Maske aufgerufen wird.
30 Checkboxen lassen sich bequem in einem 32-Bit Integer unterbringen - das wäre die platzsparendste Art. Du hast dann nur ein Feld für diese Checkbox-Gruppe. Für den Zugriff bietet sich dann TIntegerSet an.

Delphi-Quellcode:
function IsChecked(FieldData, Index: Integer): Boolean;
begin
  Result := Index in TIntegerSet(FieldData);
end;

function SetChecked(FieldData, Index: Integer; Value: Boolean): Integer;
var
  iSet: TIntegerSet;
begin
  iSet := TIntegerSet(FieldData);
  if Value then begin
    Include(iSet, Index);
  end
  else begin
    Exclude(iSet, Index);
  end;
  Result := Integer(iSet);
end;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#3

AW: Wie Datenbankstruktur aufbauen ?

  Alt 6. Aug 2017, 11:37
Das meiste ist schon gesagt.

Was die 30 Checkboxen angeht möchte ich noch zu bedenken geben:
Solange es nicht um Millionen Datensätze geht, ist eine "großzügige" Speicherung mit eigenen Spalten sicher sinnvoll, weil flexibel(er).
1. Was geschieht mit Checkboxen, die zu Tristate oder mehr werden im Laufe des Projekts?
2. Was geschieht mit zusätzlichen Feldern, die am Horizont warten?

30 ja/nein Felder riechen sehr nach dem 31. Feld und so weiter.
Vielleicht nimmt man tatsächlich eine 1:N Relation, wo dann weitere Felder nach belieben aufgenommen werden können, ohne mit Alter Table usw. anzufangen. In die GUI müssen sie natürlich trotzdem irgendwie, dazu hab ich keine Meinung. (Außer dass die DB Struktur dafür relativ egal ist)
Gruß, Jo
  Mit Zitat antworten Zitat
hanvas

Registriert seit: 28. Okt 2010
171 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Wie Datenbankstruktur aufbauen ?

  Alt 6. Aug 2017, 12:04
Zitat:
...
30 Checkboxen lassen sich bequem in einem 32-Bit Integer unterbringen - das wäre die platzsparendste Art.
Platzsparend schon, aber nur wenn Auswertungen über SQL gefahren werden sollen unter Umständen ein echtes Problem.

cu Ha-Jö
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.688 Beiträge
 
Delphi 12 Athens
 
#5

AW: Wie Datenbankstruktur aufbauen ?

  Alt 6. Aug 2017, 12:38
Platzsparend schon, aber nur wenn Auswertungen über SQL gefahren werden sollen unter Umständen ein echtes Problem.
Deswegen hatte ich ja vorher nachgefragt. Erfahrungsgemäß bringt es auch nicht viel, jetzt schon die Probleme von morgen zu lösen - die sind dann wahrscheinlich doch wieder anders. Eine nachträgliche Umstrukturierung der Datenbank auf die dann gültigen Anforderungen ist ja auch nicht verboten.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort


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 17:18 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