![]() |
AW: DB-Modell für eine Software
Zitat:
Ach, ich sehe eben, mkinzler hat das bereits als SQL hingeschrieben, so geht's natürlich auch. :thumb: |
AW: DB-Modell für eine Software
Da es keine Tabelle 'Teilnehmer' gibt, tendiere ich bei existierender Tabelle 'Personen' zur Nomenklatur 'TagungsPersonen' bzw. in diesem Fall eher zur Umbenennung der Tabelle 'Personen' in 'Teilnehmer'.
Es erhöht imho die Übersichtlichkeit, wenn keine neuen Bezeichner eingeführt werden. Die Regel wird genau dann gebrochen, wenn die entstehenden Bezeichnungen allzu albern werden. Dann gilt: Hauptsache, man versteht es. |
AW: DB-Modell für eine Software
Zitat:
Delphi-Quellcode:
Wenn aber der PK aus zwei Integer besteht? :gruebel:
x := 7;
SELECT ... FROM ... WHERE id=x; |
AW: DB-Modell für eine Software
Es sind ja auch 2 Felder
SQL-Code:
select ... from ... where person = 7 and tagung = 8;
|
AW: DB-Modell für eine Software
Das wird man aber selten brauchen. Man will eher wissen, wer alles auf einer Tagung war ('select personID from TagungsTeilnehmer where TagungsID=123') oder welche Tagungen eine Person besucht hat. Die Abfrage mit PersonID und TagungsID ist eher ein 'Hat diese Person die Tagung besucht?'
Du kannst in einer WHERE-Klausel unterbringen, was Du willst:
Code:
Zeigt die Tabelle nur nach dem 12.1.2015 an
select * from MeineTabelle WHERE CURRENT_DATE()> '12.01.2015'
und
Code:
zeigt nur die Überschriften.
select * from MeineTabelle WHERE 1=0
|
AW: DB-Modell für eine Software
Zitat:
|
AW: DB-Modell für eine Software
Zitat:
|
AW: DB-Modell für eine Software
In einer Relation? Kann man machen. Geht aber sehr schnell in Richtung => Verletzung 3NF.
|
AW: DB-Modell für eine Software
Warum nicht?
SQL-Code:
CREATE TABLE TagungsTeilnehmer(
Person Integer, Tagung Integer, BuchungsDatum DATE, bezahlt Integer, teilnehmerNr Integer, teilgenommen Integer, ... PRIMARY KEY( Person, Tagung), FOREIGN KEY( Person) REFERENCES Person ( id_person), FOREIGN KEY( Tagung) REFERENCES Tagung (id_tagung)); |
AW: DB-Modell für eine Software
Kann man zusammenfassen, sollte man aber nicht (wegen der Flexibilität). Ich persönlich würde es nicht machen, da die 3NF verletzt ist. Eine Person nimmt an einer Tagung teil, die sie zuvor gebucht hat (3 Tabellen: Personen, Buchungen, Tagungen und entsprechende Relationen).
Ich kann so einer Person ermöglichen an einer Tagung teilzunehmen, ohne das sie gebucht hat. Das soll es geben. Bei deinem Ansatz müsste dann z.B. 'Buchungsdatum = NULL' sein und für die anderen Flags müsste man auch tristate logic einführen => Anti-Pattern. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:50 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 by Thomas Breitkreuz