Fremdschlüsselbeziehung

Hallo,

ich bilde mich gerade in Sachen Datenbanken weiter und stehe gerade total auf dem Schlauch.

Angenommen ich habe 2 Tabellen. Besitzer und Fahrzeuge.
Eine 1:n Beziehung.
Ich habe bei den Besitzern eine ID als Primärschlüssel.
Weiterhin eine FahrzeugID und bei den Fahrzeugen eine ID.
Ein Besitzer kann mehrere Fahrzeuge besitzen.

Das wäre doch eine Fremdschlüsselbeziehung der beiden IDs oder ?

Nun wenn ich neue Fahrzeuge anlegen möchte kann ich das doch aber gar nicht weil die FahrzeugID doch schon vorhanden ist !?

Hi Marty,

eine Beziehung ist ein Verweis: Beim Fahrzeug ist vermerkt, wer der Besitzer ist. Jedes Fahrzeug kann genau einen oder keinen Besitzer haben, jede Person beliebig viele Fahrzeuge. Das sieht dann so aus:

Person (PersonId, Name, …)

Fahrzeug (Fahrgestellnummer, PersonId, Baujahr, …)

Das wäre doch eine Fremdschlüsselbeziehung der beiden IDs

Schlecht ausgedrückt. Nicht die beiden IDs haben eine FS-Beziehung, sondern PersonID ist FS-Attribut in Fahrzeug und verweist auf eine Person.

Nun wenn ich neue Fahrzeuge anlegen möchte kann ich das doch
aber gar nicht weil die FahrzeugID doch schon vorhanden ist !?

Ich erkenne das Problem nicht. Ein anderes Fahrzeug hat eine andere Fahrgestellnummer.

Gruß Ralf

Hallo Marty,

Angenommen ich habe 2 Tabellen. Besitzer und Fahrzeuge.
Eine 1:n Beziehung.
Ich habe bei den Besitzern eine ID als Primärschlüssel.
Weiterhin eine FahrzeugID und bei den Fahrzeugen eine ID.

deine zweite ID im vorigen Satz bezieht sich wohl auf die ID des Besitzers (lieber mal nachfragen). Du hast also in der Tabelle zwei Attribute (und wahrscheinlich noch ein paar andere): ID (d.h. die ID des Fahrzeugs) und BesitzerID (die ID des zugehörigen Besitzers).

Ein Besitzer kann mehrere Fahrzeuge besitzen.

Ok.

Das wäre doch eine Fremdschlüsselbeziehung der beiden IDs oder
?

Klar. Sowas wie

ALTER TABLE FAHRZEUGE
ADD CONSTRAINT FK\_BESITZER 
FOREIGN KEY (BesitzerID) REFERENCES BESITZER(ID);





> Nun wenn ich neue Fahrzeuge anlegen möchte kann ich das doch  
> aber gar nicht weil die FahrzeugID doch schon vorhanden ist !?


Hä???? Die Frage kapier ich so nicht.

Die einzelnen Columns in einer Tabelle muessen schon unterschiedliche Namen haben (wie oben vorgeschlagen ID und BesitzerID). In dieser Form kannst du ein Fahrzeug aber nur dann anlegen, wenn der Besitzer bereits existiert. 

HTH
bernhard

Hi Ralf,

Das sieht dann so aus:

Person (PersonId, Name, …)

Fahrzeug (Fahrgestellnummer, PersonId, Baujahr, …)

Das wäre doch eine Fremdschlüsselbeziehung der beiden IDs

Schlecht ausgedrückt. Nicht die beiden IDs haben eine
FS-Beziehung, sondern PersonID ist FS-Attribut in Fahrzeug und
verweist auf eine Person.

Ok, ich mache also eine FS Beziehung von der Person.PersonID auf die Fahrzeug.PersonID. Richtig ?

Dazu muss ja die Person.PersonID als Unique deklariert sein oder ?
Sonst kann ich keine Beziehung herstellen !
und die Beziehung mache ich doch auf der n Seite also den Fahrzeugen.
Auf Fahrzeugseite brauche ich dann keinen Primärschlüssel oder ?
Wenn das soweit stimmt …

Ich füge ein neues Fz hinzu.
Insert Into Fahrzeug(Fahrgestellnummer, PersonID, …)
Values (‚xyz‘, 1, …)
Ich habe aber schon ein Fahrzeug mit der PersonID = 1.

Da bekomme ich eine Exception das es den key schon gibt.

hat sich erledigt
ich bin so doof …

ich nutze Oracle SQL Developer und ich habe nur vergessen einen Haken raus zu nehmen.
Ich habe die Beziehung hergestellt zwischen den beiden IDs aber er hatte noch einen Primärschlüssel für diese ID gesetzt.
Schwer zu zeigen :smile:
Aber war meine Schuld !!!

trotzdem danke für die schnellen Antworten !!!