Du musst zwischen "Attribut" (auch "Spalte", "Feld") und "Schlüssel" unterscheiden.
Ein PK ist ein besonderes Attribut. Er sollte keine Bedeutung haben, sonst kann spätere Datenarbeit unangenehm werden, also bspw. wenn irgendwie umverzeigert werden muss.
Ein Schlüssel ist nicht auf ein einziges Feld beschränkt.
Sollte er aber normalerweise sein.
Ein Primärschlüssel dient lediglich dazu, einen Datensatz in einer Tabelle eindeutig (!) zu identifizieren.
Du hast doch mal das Wort "eineindeutig" eingeführt. LOL
Das schreckliche kleine Ding ist jetzt doch in meinem aktiven Sprachschatz.
"Lerne" ich jetzt auch noch, dass es uneindeutige Identifikation gibt oder eineindeutige?
Häufig werden in Tabellen Integer-Spalten (id) angelegt, die dann zum alleinigen Primärschlüssel gemacht werden. Allerdings ist dies auch nicht die einzige Möglichkeit und auch nicht immer die sinnvollste.
Es ist die sinnvollste. An welche anderen Möglichkeiten denkst Du?
Doch, bei m:n-Relationstabellen sind beide Einzelspalten jeweils Fremdschlüssel, beide Spalten _zusammen_ bilden den Primärschlüssel.
Nö. Da muss sich erst einmal jemand entscheiden diesen einzurichten. Es spricht nichts gegen einen PK, der nicht zusammengesetzt ist.
Sprich: Das Wertepaar (4, 6) sollte bloß einmal in der Tabelle stehen, sonst bekommst Du bei JOINs doppelte Datensätze.
Grundsätzlich ja, aber es gibt wie ich finde sinnvolle Ausnahmen, bspw. wenn Historisierung im Spiel ist.
Du kannst in genau einem Fall auf Primärschlüssel bei Tabellen verzichten (und dann musst Du es sogar), nämlich genau dann, wenn doppelte Datensätze (d.h. Datensätze, bei denen *ALLE* Attribute der Tabelle den gleichen Wert haben) abgespeichert werden sollen *UND* Du die Datensätze *NICHT* eindeutig identifizieren können musst.
Es mag da in der Tat einige, sagen wir mal rein mathematische Daten geben bei denen diese Aussage zutrifft. Ich rate allerdings immer von diesem Vorgehen, sogar von dsbzgl. Überlegungen dringendst ab. "Datensätze ohne PK?" => Todessünde des Datendesigns
PS: Normalerweise analysiere ich Deine Beiträge nicht, aber das mit "eindeutig identifizieren" hat mich an alte Zeiten erinnert.