ER-Modell Fremdschlüssel als Primärschlüssel möglich?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Land(Vorwahl, Landeskürzel)

Handynummer(ID, Nummer, Land.Vorwahl)

Somit hast du eine 1:n-Beziehung zwischen Land und Handynummer. Dass der PK der 1-Seite zum FK der n-Seite wird, ist hoffentlich bekannt.

Aber warum müsst ihr eine Handynummer als Entität und nicht als Attribut darstellen?

Kalkablagerung 
Fragesteller
 06.04.2024, 12:03

Ah ja, ok das kann man machen. Könnte man auch (also würde ich nicht machen, aber rein hypothetisch) den Primärschlüssel zusammengesetzt aus "Nummer" und "KollisionsID" machen (also, wenn eine Nummer doppelt ist, dann ist die KollisionsID 0 bei der ersten, 1 bei der zweiten, 2 bei der dritten, ...).

Wir müssen tatsächlich nur "Handy" als Entitätsklasse darstellen, aber damit es klarer für diese Frage wird, habe ich es zu Handynummer geändert, weil ich sonst noch erklären müsste, dass wir annehmen sollen, dass ein Handy immer die selbe Handynummer hat (also kein SIM-Karten-Switch möglich ist)

0
cleanercode  06.04.2024, 12:09
@Kalkablagerung

Dann hättest du einen zusammengesetzten PK, was nicht im Sinne eines relationalen Modells ist -> Normalisierung. Eine RDB sieht nur einen PK - also eine Spalte als PK - vor, um einen Datensatz eindeutig identifizieren zu können. Referenzielle Integrität und das ganze Zeugs kommt noch - hoffe ich :)

Aber wenn ihr das Handy als Entität habt, dann wäre doch eine Handynummer kein PK, sondern die IMEI. Nur als Tipp :)

1
Kalkablagerung 
Fragesteller
 06.04.2024, 15:18
@cleanercode

Danke für die Erklärung! Ich hoffe doch, dass ich das ganze Zeug noch lerne, dafür studiere ich ja.

Ich war noch im Prozess, das komplette ER-Modell zu erstellen und musste jetzt doch noch die Handynummer als separates Entity machen, da noch anderer Entitys ein Relationship mit der Telefonnummer haben sollen und nicht direkt mit dem Handy und weil ein Handy mehrere Handynummern haben könnte usw.

Ich verwende sehr häufig einfach nur eine ID als PK bei meinen Entitäten, weil alles eine gewisse Ungenauigkeit hat, weiß jedoch nicht, ob ich das für gut oder schlecht befinden sollte

1
cleanercode  06.04.2024, 15:47
@Kalkablagerung

An dieser Stelle darfst du nicht zu theoretisch denken. Die Handynummer ist nicht dem Handy direkt zuzuordnen, sondern dem Vertragspartner. Also eure Aufgabe würde ich gerne sehen :D

IDs zu verwenden ist immer besser als ein neues Komplex zu erschaffen. In der Praxis hättest du eine Mitarbeiternummer, Personalnummer, MAC-Adresse etc.

Aber ja, das kommt noch alles :)

1

Die Tablle Handynummer ist doch mit dem Land n:1 zu Verknüpfen. Wo liegt das Problem? Vorwahl/Landesvorwahl ist der zu Verknüpfende Primär/Fremdschlüssel.

Ein Fremdschlülüssel kann nie ein Primärschlüssel sein, sonst können die zugehörigen Daten ja in eine Tabelle!

Kalkablagerung 
Fragesteller
 06.04.2024, 12:05

Aber ein Fremdschlüssel kann doch Teil des Primärschlüssels sein, oder nicht?

0
elenaBC2411  06.04.2024, 13:07
@Kalkablagerung

Man kann schon einen zusammengesetzten Primärschlüssel erstellen, ich bvorzuge aber immer einen Künstlichen. Da spätestens beim JOIN ist so nen zusammengesetzter Primärschlüssel eher zur Fehlerquelle mutiert.

1