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!
Na wenn das kein optionaler (0..1) FK ist dann darf er auch nicht Null sein.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
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!
Ein Feld, das zu einem PK gehört, darf nicht null sein. Das ist dann ganz einfach kein geeignetes Feld für einen Key.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
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?
Sobald ein Feld zum PK gehört, darf es nicht null sein - egal wie man sich wendet.
Ein FK KANN null sein (0..1).
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
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 😦
Hast Du das NOT NULL- Contraint für position_ID ausgewählt? BTW. das Modell ist wirklich schwer zu lesen.
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.
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?
position_ID ist die id der planstelle und personal_ID die personalnummer.
hab den key nochmal entfernt und neu hinzugefügt. Jetzt funktioniert alles 😃