n:m-Beziehung verwenden?

Moderator: ModerationP

Re: n:m-Beziehung verwenden?

Beitragvon ClausM » 19. Nov 2020, 16:45

Sorry, aber ich habe noch nie mit n:m-Tabellen gearbeitet und ich verstehe die Antworten nicht.

@Ulrich
dann mußt du anstatt einer 1:n Beziehung eine m:n Beziehung verwenden und die KundenID in der Tabelle Lieferadressen entfällt.

Wenn ich in der Tabelle Lieferadresse die KundenID lösche, dann verliere ich ja die Beziehung zu den kundenspezifischen Adressen und benötige keine Zwischentabelle, allerdings habe ich dann keine Beziehung und damit auch keine ref. Integrität.

@Ekkehard
Das darf nicht sein. Um das zu verhindern musst bei dieser Beziehung in der ref. Integrität die
Löschweitergabe einschalten.

S. o.
Ohne KundenID keine Beziehung.

Habe jetzt einmal eine n:m-Tabelle eingerichtet, ohne KundenID, verstehe aber nicht wie ich jetzt weiter machen soll.

LG
Claus
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
ClausM
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 103
Registriert: 16. Mär 2019, 10:28

Re: n:m-Beziehung verwenden?

Beitragvon Beaker s.a. » 19. Nov 2020, 17:28

Hallo Claus,
Was ist das jetzt? Von den beiden Tabellen war doch bis jetzt überhaupt keine
Rede. Das ist doch ein ganz anderer Teil des Models. Es ging um die Beziehung
von Kunden zu Adressen. Und das ist doch ganz einfach, -
1. ein Kunde hat mehrere Adressen -> 1:n (Kunde ist FK in Adresse, Adresse ist
nur für diesen einen Kunden gültig)
2. ein Kunde hat weiterhin mehrere Adressen, eine Adresse ist aber für mehrere
Kunden gültig -> n:m (Kunde und Adresse sind FK in dieser). Es liegen dann
zwei 1:n Beziehungen an dieser Tabelle.

Beim Löschen mit Löschweitergabe passiert Folgendes:
Bei 1. Beim Löschen eines Kunden werden auch alle Adressen des Kunden mit
gelöscht. Das Löschen einer Adresse hat keine weitere Auswirkung. Ausser die
gibt es noch als FK in anderen Tabellen. Aber dann dürfte der Kunde eh nicht
gelöscht werden.
Bei 2.
- Kunde wird gelöscht -> alle Einträge des Kunden werden auch in der n:m
gelöscht, die Adressen an sich bleiben aber erhalten
- Adresse wird gelöscht -> hier jetzt werden alle Einträge der Adresse in der
n:m gelöscht, die Kunden die das betrifft bleiben erhalten.
- In der n:m kannst du beliebige Zuordnungen (Kunde/Adresse) löschen ohne
Nebenwirkungen (Arzt und Apotheker also nicht gefragt).

Zum Löschen von DS an sich; - das macht man normal gar nicht. Besser ist es
m.E. ein Datumfeld mitzuführen, in das man statt löschen eben ein Datum
schreibt. Das Auswählen/Anzeigen nur der aktiven DS erfolgt dann über ein
Kriterium
Code: Alles auswählen
… WHERE LoeschDatum Is Null


gruss ekkehard
Ereignisorientierte Programmierung:
Alles, was geschieht, geschieht.
Alles, was während seines Geschehens etwas anderes geschehen
läßt, läßt etwas anderes geschehen.
Alles, was sich selbst im Zuge seines Geschehens erneut geschehen
läßt, geschieht erneut.
Beaker s.a.
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 1056
Registriert: 14. Jul 2012, 21:56
Wohnort: Bremen

Re: n:m-Beziehung verwenden?

Beitragvon ClausM » 23. Nov 2020, 10:11

Hallo Ekkehard,

danke für die ausführliche Antwort.
Du hast Recht, das bin ich letzte Woche falsch angegangen.

Meine Tabellen/Beziehungen sehen jetzt so aus
Beziehungen BE.png


Jetzt habe ich noch ein Problem beim Löschen der Lieferadressen.

Im HFO Kunden mit UFO Lieferadresse sind diese über die KNr verbunden.
Das UFO hat als Datenquelle folgende Abfrage.
Code: Alles auswählen
SELECT ztb_Kunde_Lieferadresse.*, tbl_Lieferadresse.*
FROM tbl_Lieferadresse INNER JOIN ztb_Kunde_Lieferadresse ON tbl_Lieferadresse.LA_ID = ztb_Kunde_Lieferadresse.KL_LA_ID
ORDER BY tbl_Lieferadresse.LA_Name;


Lösche ich jetzt eine Lieferadrese mit
Code: Alles auswählen
  DoCmd.RunCommand acCmdDeleteRecord

wird nur der Datensatz in der Zwischentabelle gelöscht.

Muss ich die Abfrage anders aufbauen oder in VBA mich selbst um das Löschen der Datensätze in der Tabelle Lieferadresse kümmern?

LG
Claus
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
ClausM
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 103
Registriert: 16. Mär 2019, 10:28

Vorherige

Zurück zu Access Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste