AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken FreePascal Können zwei Tabellen gegenseitig zu einander in Beziehung stehen?
Thema durchsuchen
Ansicht
Themen-Optionen

Können zwei Tabellen gegenseitig zu einander in Beziehung stehen?

Ein Thema von AlexII · begonnen am 12. Mai 2015 · letzter Beitrag vom 14. Mai 2015
Antwort Antwort
Seite 2 von 3     12 3      
Dejan Vu
(Gast)

n/a Beiträge
 
#11

AW: Können zwei Tabellen gegenseitig zu einander in Beziehung stehen?

  Alt 12. Mai 2015, 19:14
Jaaaa, passt hier nicht (imho). Ich glaube, hier wurde einmal zu viel um die Ecke gedacht, das ist alles.

Aber grundsätzlich: Pflichtlektüre.
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#12

AW: Können zwei Tabellen gegenseitig zu einander in Beziehung stehen?

  Alt 12. Mai 2015, 19:46
Nun ist es so, mehrere Alarme können auf einen Job verweisen dazu der FK. Und den FK in der Tabelle Job brauche ich um alle Alarme aus der Tabelle Alarm zu löschen falls ein Job gelöscht wird.
Mal ganz langsam: Es gibt eine Job-Tabelle, die hat einen PK (Primary Key). Und es gibt eine Termin-Tabelle, da gibt es neben der Spalte DATUM ebenfalls einen PK. Nun möchtest du notieren, daß ein Job mehrere Termine haben kann, ein Termin aber auch mehrere Jobs. Dafür erstellst du nun eine dritte Tabelle, die meinetwegen JOB_TERMIN heißt, spendierst ihr einen PK und richtest daneben noch die Spalten Id_Job und Id_Termin ein. In diese dritte Tabelle schreibst du nun deine Zuweisungen:
Delphi-Quellcode:
Function NeuerTermin(Const Id_Job, Id_Termin : Integer) : Boolean;
begin
  Id_Job := Query_Job.FieldByName('ID_JOB').AsInteger;
  Id_Termin := Query_Termin.FieldByName('ID_TERMIN').AsInteger;
  If Not Query_Job_Termin.Locate('ID_JOB;ID_TERMIN';VarArrayOf([Id_Job,Id_Termin]),[]) Then
  Begin
    Query_Job_Termin.Append;
    Query_Job_Termin.FieldByName('ID_JOB').AsInteger := Id_Job;
    Query_Job_Termin.FieldByName('ID_TERMIN').AsInteger := Id_Termin;
    Query_Job_Termin.Post;
    Result := True;
  End Else Result := False;
end;
Auf diese Weise kannst du nun jedem Termin mehrere Jobs zuweisen und jedem Job mehrere Termine. Wenn du nun einen Job löschen willst, dann merkst du dir dessen Id und löschst aus der Tabelle JOB_TERMIN alle Einträge, die sich auf diese Job-Id beziehen.
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#13

AW: Können zwei Tabellen gegenseitig zu einander in Beziehung stehen?

  Alt 12. Mai 2015, 20:56
Ich glaube nicht, das er meint, das ein Termin mehrere Jobs haben kann. Wenn doch (m:n-Beziehung), hättest Du Recht.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#14

AW: Können zwei Tabellen gegenseitig zu einander in Beziehung stehen?

  Alt 12. Mai 2015, 21:39
Ich glaube nicht, das er meint, das ein Termin mehrere Jobs haben kann. Wenn doch (m:n-Beziehung), hättest Du Recht.
Wäre es ausgeschlossen, daß eine n:m Beziehung bestehen könnte, dann wäre eine solche Tabelle unnötig.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#15

AW: Können zwei Tabellen gegenseitig zu einander in Beziehung stehen?

  Alt 13. Mai 2015, 02:42
In der Tat! Dann würde nämlich eine Tabelle mit den Spalten Termin und Job-Id vollauf genügen. Wenn dies das Anliegen des TE wäre, bräuchte er keine zusätzliche Tabelle. Es gibt sogar Grund zu der Vermutung, daß der TE das so gemeint haben könnte, denn er wollte in seiner DB-Unerfahrenheit ja lediglich die einem Job zugehörigen Termine löschen, wenn der Job gelöscht wird, und glaubte, er müsse dafür irgendwie in der Job-Tabelle vermerken, welche Termine jeder Job habe, obwohl diese Information ja bereits in der Termine-Tabelle notiert wurde. Er wußte nicht, daß man das einfach via SQL-Befehl erledigen könnte:

delete from TERMINE where ID_JOB = ...
delete from JOBS where ID_JOB = ...
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#16

AW: Können zwei Tabellen gegenseitig zu einander in Beziehung stehen?

  Alt 13. Mai 2015, 06:15
Ich glaube nicht, das er meint, das ein Termin mehrere Jobs haben kann. Wenn doch (m:n-Beziehung), hättest Du Recht.
Wäre es ausgeschlossen, daß eine n:m Beziehung bestehen könnte, dann wäre eine solche Tabelle unnötig.
D.h. Du gibst mir Recht.
..daß man das einfach via SQL-Befehl erledigen könnte:...
Hatten wir auch schon
Löschen eines Jobs 'JID'...
Wer hört auf erstes auf, dem Vorposter Recht zu geben? Ich meine, es ist Balsam für die Seele, aber spamt auf Dauer das Forum zu
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#17

AW: Können zwei Tabellen gegenseitig zu einander in Beziehung stehen?

  Alt 13. Mai 2015, 06:20
Wer hört auf erstes auf, dem Vorposter Recht zu geben? Ich meine, es ist Balsam für die Seele, aber spamt auf Dauer das Forum zu
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#18

AW: Können zwei Tabellen gegenseitig zu einander in Beziehung stehen?

  Alt 13. Mai 2015, 06:35
Na, Du sagst was Richtiges. Ich sag was, KH gibt mir Recht, Du gibst mir Recht (wiederholst das, was ich eine Seite zuvor gesagt habe). Ist ja alles kein Problem, aber irgendwie drehen wir uns im Kreis. Die Lösungen aller Lösungen ist schon genannt (keine m:n Beziehung, FK in den Terminen unnötig, Löschen über zwei DELETE-Befehle).

Jetzt können wir endlos darauf herumreiten und uns gegenseitig Recht geben, oder etwas anderes machen. Ich plädiere für Letzteres.

  Mit Zitat antworten Zitat
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#19

AW: Können zwei Tabellen gegenseitig zu einander in Beziehung stehen?

  Alt 13. Mai 2015, 08:53
Also ein Job kann mehrere Alarme haben, z.B. jeden Mittag um 12 Uhr, oder nur ein Mal. Und ein Alarm kann nur auf einen Job zeigen. Ist wohl ne 1:n Beziehung.
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#20

AW: Können zwei Tabellen gegenseitig zu einander in Beziehung stehen?

  Alt 13. Mai 2015, 11:05
Ich glaube nicht, das er meint, das ein Termin mehrere Jobs haben kann. Wenn doch (m:n-Beziehung), hättest Du Recht.
Wäre es ausgeschlossen, daß eine n:m Beziehung bestehen könnte, dann wäre eine solche Tabelle unnötig.
D.h. Du gibst mir Recht.
Leider Nein! da in unseren Aussagen die Schwerpunkte diametral sind.
Durch
Also ein Job kann mehrere Alarme haben, z.B. jeden Mittag um 12 Uhr, oder nur ein Mal. Und ein Alarm kann nur auf einen Job zeigen. Ist wohl ne 1:n Beziehung.
Hat sich allerdings die Diskussion über n:m Relationen erledigt.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 07:41 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