Zusammengesetzte Primaerschluessel, gute Idee?
-
Hallo,
ich habe eine Tabelle mit zwei zusammengesetzten Primaerschluessel, einer vom Typ char(32), der andere char(16). Desweiteren gibt es zwei, drei andere Tabellen, welche diese beiden Primaerschluessel referenzieren.
Ist das grundsaetzlich eine gute Idee?
Oder sollte ich auf die zusamengesetzten Schluessel verzichten, und stattdessen einen Autoincrement Schluessel vom Typ Int verwenden, wobei die anderen beiden dann unique werden.
Was aus meiner Sicht gegen die Zusammensetzung der Schluessel spricht:
- mehr Speicherverbrauch wegen referenzierenden Fremdschluesseln
- mehr Tipparbeit (z. B. bei Select statements)Die Vorteile fallen mir hier nicht ein... ausser dass man manchmal (manchmal) ein Inner Join sparen kann.
Wann macht es ueberhaupt Sinn, zusammengesetzte Primaerschluessel zu verwenden?* Man kann eigentlich lieber einen Int-Schluessel zum Indexing benutzen. Und die relevanten Felder immer auf unique setzen.
*Edit: Wenn eine Tabelle nur aus Primaerschluesseln besteht (habe soeine mit 4 Stueck), aber nicht referenziert wird, spricht wohl nix dagegen.
-
bei zusammengesetzten primärschlsseln kann man einfach zwei daten bestände zusammenfügen.
wenn der eine teil des schlüssels zum beispiel die standortid ist.so kann man verteilte datenbanken realisieren.
in unterschiedlichen einrichtungen kann auf einer lokalen (und deshalb schnellen) datenbasis gearbeitet werden und die änderungen werden einfach an die anderen einrichtungen geschickt.