Karsten Wutzke
2009-06-09 10:24:08 UTC
Hallo,
ich habe eine Situation in der sich Strings als natürlicher Schlüssel
anbieten, statt wie jeder heutzutage noch eine zusätzliche ID
einzuführen.
Mir schwebt vor sowas simples wie
CREATE TABLE Keywords
(
keyword VARCHAR(50) PRIMARY KEY
);
vor. Ich habe pro DBMS eine Sub-Tabelle, also
CREATE TABLE MySqlKeywords
(
keyword VARCHAR(50) PRIMARY KEY,
reserved BOOLEAN,
CONSTRAINT fk_MySqlKeywords_Keywords
FOREIGN KEY (keyword)
REFERENCES Keywords (keyword)
ON DELETE CASCADE
ON UPDATE CASCADE
);
Nun meine eigentliche Frage:
Hat es Nachteile einen String als Primärschlüssel zu wählen, also
grundsätzlich? Einen natürlicheren Schlüssel als Keywords kann es
eigentlich kaum geben, somit finde ich eine künstliche ID ein wenig
sinnlos.
Wie sieht es aus mit der Performance String vs. Integer ID's? Und wie
ist der Speicherüberhang? Für DB's mit hoher Last macht das wohl was
aus...
Was meint ihr zu dem Thema?
Karsten
ich habe eine Situation in der sich Strings als natürlicher Schlüssel
anbieten, statt wie jeder heutzutage noch eine zusätzliche ID
einzuführen.
Mir schwebt vor sowas simples wie
CREATE TABLE Keywords
(
keyword VARCHAR(50) PRIMARY KEY
);
vor. Ich habe pro DBMS eine Sub-Tabelle, also
CREATE TABLE MySqlKeywords
(
keyword VARCHAR(50) PRIMARY KEY,
reserved BOOLEAN,
CONSTRAINT fk_MySqlKeywords_Keywords
FOREIGN KEY (keyword)
REFERENCES Keywords (keyword)
ON DELETE CASCADE
ON UPDATE CASCADE
);
Nun meine eigentliche Frage:
Hat es Nachteile einen String als Primärschlüssel zu wählen, also
grundsätzlich? Einen natürlicheren Schlüssel als Keywords kann es
eigentlich kaum geben, somit finde ich eine künstliche ID ein wenig
sinnlos.
Wie sieht es aus mit der Performance String vs. Integer ID's? Und wie
ist der Speicherüberhang? Für DB's mit hoher Last macht das wohl was
aus...
Was meint ihr zu dem Thema?
Karsten