Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Frage zu meiner aktuellen DB-Tabellenstruktur (https://www.delphipraxis.net/147090-frage-zu-meiner-aktuellen-db-tabellenstruktur.html)

scrat1979 1. Feb 2010 18:37

Datenbank: Firebird • Version: aktuelle Version • Zugriff über: IBDAC von DEVart

Frage zu meiner aktuellen DB-Tabellenstruktur
 
Hallo zusammen,

ich programmiere gerade - wie hier schon öfters erwähnt :lol: - einen Dienstplaner für meine Abteilung. Um mir nicht schon jetzt evtl. durch mein Datenbankdesign später etwas zu verbauen, habe ich eine Frage zu meinem aktuellen Tabellendesign.

Das grundlegende Prinzip ist ganz einfach: Pro Tag (Datum) gibt es einen 1. Dienst, einen 2. Dienst sowie einen Notarzt

Dazu habe ich MOMENTAN folgende 2 Tabellen

1. TBLCALENDAR: DATUM | ERSTEDIENST | ZWEITEDIENST | NOTARZT
2. TBLDOCS DOCID | DOCNAME

In den Spalten ERSTEDIENST, ZWEITEDIENST und NOTARZT wird jeweils die ID des entsprechenden Kollegen eingetragen. Die SQL-Abfragen über entsprechende JOINS geben alles korrekt zurück.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Nun meine Frage, ich habe das Gefühl, dass meine Normalisierung nicht vollständig ist. Wäre die Aufteilung auf 3 Tabellen nicht korrekter?

1. TBLCALENDAR: DATUM | [noch andere Spalten]
2. TBLDIENSTE ID | ZUDATUM | DIENSTART | DOC
2. TBLDOCS DOCID | DOCNAME

Auch mit dieser Struktur habe ich mal testweise eine Abfrage erstellt - funktioniert auch tadellos :)



Falls etwas unklar sein sollte, kein Problem, dann gibts noch mehr Infos :)

Danke Euch im Voraus!

MacGuyver 1. Feb 2010 21:46

Re: Frage zu meiner aktuellen DB-Tabellenstruktur
 
Moin auch!

Mit der zweiten Variante bist du besser bei. Über einen FachPK auf TBLDIENSTE definiert aus ZUDATUM + DIENSTART + DOC verhindert die Datenbank dann schon eine Doppelbelegung. Wenn du bei der Eingabe selber abfragen willst, kannst du auch mit einem einfachen Statement schon fragen, ob der Arzt an dem Tag schon Dienst hat. Beim Erstellen des Dienstplans kann auch schön über TBLDIENSTE gegangen werden.

Bei der ersten Variante sparst du eine Tabelle. Ja, das wars. Willst du um einen dritten Arzt erweitern oder einen zweiten Notarzt hinzufügen, müsstest du alle Abfragen durchlaufen und so. Beim Arbeiten mit TBLDIENSTE hast du das dann nicht.

Viel Spaß dabei noch


Stefan

scrat1979 2. Feb 2010 05:21

Re: Frage zu meiner aktuellen DB-Tabellenstruktur
 
Danke für die rasche Antwort! Das war auch mein Gedanke...

SCRaT


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:28 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