Laden...

[gelöst] Insert mit Null-Wert im Fremdschlüssel

Erstellt von Fabian710 vor 10 Jahren Letzter Beitrag vor 10 Jahren 1.214 Views
F
Fabian710 Themenstarter:in
42 Beiträge seit 2013
vor 10 Jahren
[gelöst] Insert mit Null-Wert im Fremdschlüssel

verwendetes Datenbanksystem: <SQL Server Studio Management 2008>

Hallo Leute,
ich habe folgende Datenbank, wie auf dem Bild ersichtlich.
Wenn ich einen Datensatz in MA_Quali einfüge die als position_ID einen NULL Wert enthalten kommt es zum Fehler, das die FK-Beschränkung nicht eingehalten wird.
Ist es nicht möglich einem FK einen NullWert zuzuweisen?

Es kann nämlich sein, das ein MA über Qualifikationen verfügt, die keiner Stelle zuzuordnen sind, und demnach als Wert für die position_ID den NULL Wert erhalten!

Danke für eure Hilfe!

16.807 Beiträge seit 2008
vor 10 Jahren

Na wenn das kein optionaler (0..1) FK ist dann darf er auch nicht Null sein.

F
Fabian710 Themenstarter:in
42 Beiträge seit 2013
vor 10 Jahren

Wie kann ich das denn einstellen, das er ein Optionaler Wert ist?
Für Jeden Datensatz in der Tabelle MA_Quali bildet sowohl die personal_ID als auch die quali_ID den zusammengesetzten PK. Es soll zusätzlich(FK) ein Verweis auf die position_ID gegeben sein, aber wie gesagt auch NULL Werte aktzeptieren. (Nicht jede vorhandene Qualifikationen ist explizit der Stelle (position) in der der MA tätig ist zugeordnet!

16.807 Beiträge seit 2008
vor 10 Jahren

Ein Feld, das zu einem PK gehört, darf nicht null sein. Das ist dann ganz einfach kein geeignetes Feld für einen Key.

F
Fabian710 Themenstarter:in
42 Beiträge seit 2013
vor 10 Jahren

Hmm, aber in der Tabelle ist Position ist es ja eindeutig. Nur kann es zusätzlich in der MA_Quali vorkommen, das dort der NULL Wert nötig ist?

16.807 Beiträge seit 2008
vor 10 Jahren

Sobald ein Feld zum PK gehört, darf es nicht null sein - egal wie man sich wendet.
Ein FK KANN null sein (0..1).

F
Fabian710 Themenstarter:in
42 Beiträge seit 2013
vor 10 Jahren

Also geht das nun in meinem Fall oder nicht?
Die position_ID in MA_Quali ist FK, gehört nicht zum PK, soll/kann laut deiner Aussage NUll sein, klappt aber nicht 😦

W
955 Beiträge seit 2010
vor 10 Jahren

Hast Du das NOT NULL- Contraint für position_ID ausgewählt? BTW. das Modell ist wirklich schwer zu lesen.

F
Fabian710 Themenstarter:in
42 Beiträge seit 2013
vor 10 Jahren

Hallo witte,
nochmal mit erweiterter Darstellung:

W
955 Beiträge seit 2010
vor 10 Jahren

Bist Du Dir sicher dass das richtig modelliert ist? Was ist Position? Sowas wie Manager? Und der MA ist in MA_Quali versteckt?
Ich verstehe position_ID vs. personal_ID nicht. Normalerweise würde man beide FK zu einem Primärschlüssel verblocken oder aber einen neuen Surrogatschlüssel machen.Das ist bei Dir nicht der Fall.

L
416 Beiträge seit 2008
vor 10 Jahren

Du bist dir sicher das der FK zwischen MA_Quali und Position das Problem ist? Genaue Fehlermeldung?

Varchars als Pks? Autsch

Was ist das für ein Schlüssel im zweiten Bild rechts unten, fast versteckt?

F
Fabian710 Themenstarter:in
42 Beiträge seit 2013
vor 10 Jahren

position_ID ist die id der planstelle und personal_ID die personalnummer.

hab den key nochmal entfernt und neu hinzugefügt. Jetzt funktioniert alles 😃