Problem Datenbankmodell - Mehrfachbeziehungen

jsjs19xx

Neuer Benutzer
Beiträge
2
Hallo Community,

ich möchte mit Access eine Datenbank erstellen und habe ein grundsätzliches Problem mit den Beziehungen zwischen Tabellen.

Beispielsweise sollen folgende Tabellen vorkommen: Firmen, Städte und Länder.

Wie löse ich das in Access wenn folgende Kardinalitäten vorliegen:

Länder zu Städte (1:n) -> In einem Land gibt es mehrere Städte
Städte zu Firmen (1:n) -> In einer Stadt gibt es mehrere Firmen

und jetzt das problematische:
Länder zu Firmen (1:n) -> Es sollen Firmen auch lediglich Länder zugeordnet werden können.

Wenn ich das in Access verknüpfe kommt da allerdings eine 1:1-Beziehung raus.



Ich hoffe ihr könnt mir weiterhelfen.
Viele Grüße
 

Anhänge

  • modell.jpg
    modell.jpg
    21 KB · Aufrufe: 3
Werbung:
vielleicht so...

Code:
test=# create table laender(id int generated always as identity primary key, name text);
CREATE TABLE
test=*# create table staedte (id int generated always as identity primary key, land int references laender, name text);
CREATE TABLE
test=*# create table firmen (id int generated always as identity primary key, land int references laender, stadt int references staedte, name text, check ((case when land is null then 1 else 0 end) + (case when stadt is null then 1 else 0 end) = 1));
CREATE TABLE
test=*# insert into laender (name) values ('Land 1');
INSERT 0 1
test=*# insert into laender (name) values ('Land 2');
INSERT 0 1
test=*# insert into staedte (name) values ('Stadt 1');
INSERT 0 1
test=*# insert into staedte (name) values ('Stadt 2');
INSERT 0 1
test=*# insert into firmen (land, stadt, name) values (null, 1, 'Firma 1');
INSERT 0 1
test=*# insert into firmen (land, stadt, name) values (2, null, 'Firma 2');
INSERT 0 1
test=*# insert into firmen (land, stadt, name) values (2, 1, 'Firma 3');
FEHLER:  neue Zeile für Relation »firmen« verletzt Check-Constraint »firmen_check«
DETAIL:  Fehlgeschlagene Zeile enthält (3, 2, 1, Firma 3).
test=*#

Firma muß also zwingen entweder Stadt oder Land haben, nicht beides, nicht keines.
 
@akretschmer

Hallo, danke für die rasche Antwort. Könntest du mir das bitte ins "deutsche" aufschlüsseln? Ich bin mir dem Code etwas aufgeschmissen. Bin blutiger Anfänger in Access.
Viele Grüße
 
Werbung:
Zurück
Oben