![]() |
Datenbank: egal • Version: egal • Zugriff über: egal
Wie Datenbankstruktur aufbauen ?
Hallo zusammen,
ich habe zwei Fragen, wie würdet Ihr bei folgender Situation die Datenbankstruktur aufbauen ? Situation:
Fragen:
|
AW: Wie Datenbankstruktur aufbauen ?
In der Regel sollte die visuelle Darstellung nicht als Grundlage für die Datenbankstruktur dienen. Auch die Aussage
Zitat:
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. |
AW: Wie Datenbankstruktur aufbauen ?
Zitat:
Zitat:
|
AW: Wie Datenbankstruktur aufbauen ?
Liste der Anhänge anzeigen (Anzahl: 3)
aus meiner Sichr sinnvolle DB Struktur:
- BasisDaten ala Kundennummer und Kundenname (PK) plus die Daten aus "Tab1" und "Tab2" in die Haupttabelle - die Daten des "Tab3" wenn vorhanden in eine 1:1 per KundenNr verknüpfte separate "DetailTabelle" - in der DB per referenzieller Integritätsregel dafür sorgen, das wenn ein Datensatz der Haupttabelle gelöscht wird, automatisch auch ein eventueller Datensatz in der Detailtabelle verschwindet Das Abspeichern von 30 CheckboxFeldern in einer DB hängt davon ab, wie elegant du rein per SQL zuküntig darauf "filtern" willst. - faule TMS Anwender nehmen "DBAdvOfficeCheckGroup" - 30 BoolFelder (sehr unschön) - ein TextFeld mit 30 '0'/'1' (OldScool und sogar MultiState-Fähig['0'/'1'/'2'/..], für den Fall das plötzlich doch mal schnell noch eine Zusatzinfo gespeichert werden muss) - wer keinen Platz bei Milionen von Datensätzen verschwenden will, nimmt ein 32Bit oder 64Bit Ganzzahlfeld oder ein 128Bit GUID-Feld und setzt sich im Delphi das bitweise zusammen, da ist dann aber nix mehr mit Filtern per StandardSQL - wenn man es rein DB technisch lösen möchte, nehme man eine zusätzliche N:M Verknüpfungstabelle, wo mindestens KundenNr+CkeckBoxNr als Felder drin sind, und die Existenz/nich Existenz des Verküpfungsdatensatzes dann den CheckBox State repräsentiert... erweitert gäbe es noch ein "LinkValue", womit man dann dann auch wieder "MultiState-Fähig" wäre Die meisten Anwendungen die ich kenne, nehmen Textfelder passender Länge gefüllt mit '0'/'1', oder nutzen sauber eine separate N:M LinkTabelle. Ich selbst programmiere wenn es um wirklich viele Datensätze geht auch gerne mit Ganzzahlfeldern die ich selbst BitWeise auswerte oder zusammensetze. Anbei ein total OldScool Quick&Dirty GUI dazu, was ich für so Sachen mir so angewöhnt habe... bleibt aber selten optisch auf Dauer so;) |
AW: Wie Datenbankstruktur aufbauen ?
Zitat:
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. Zitat:
Delphi-Quellcode:
an.
TIntegerSet
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; |
AW: Wie Datenbankstruktur aufbauen ?
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) |
AW: Wie Datenbankstruktur aufbauen ?
Zitat:
cu Ha-Jö |
AW: Wie Datenbankstruktur aufbauen ?
Zitat:
|
AW: Wie Datenbankstruktur aufbauen ?
Zitat:
Bei den Kundendaten würde ich nicht sparen. Wenn die Möglichkeit besteht, daß zu einem Kunden zwei Adresssätze nötig sein könnten, dann auf jeden Fall mit einer KundenMasterTabelle und einer,zwei.. KundendetailTabelle(n) arbeiten. was die 30 Checkboxen angeht, es kommt darauf an welche Daten sich dahinter verbergen. Es könnte durchaus sein, das 30tabellen, insbesonders im Hinblick auf die Auswertung, hier empfehlenswert sind. Gruß K-H |
AW: Wie Datenbankstruktur aufbauen ?
Hallo zusammen,
vielen Dank für die vielen Infos. Ich habe zumindest schonmal eines festgelegt, dass die Daten aus Tab3 in eine extra Tabelle mit einer 1:n Beziehung zur Kundentabelle erstellt werden. Was die bis zu 30 Checkboxen angeht, schwanke ich noch zwischen einem Textfeld (Inhalt : 0;0;1;0;1;1;0;0) mit entsprechender Länge und bis zu 30 Spalten. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:21 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