Mailinglisten-Archive |
Hallo Mike, > Tatsachen? hmm stimmt habe schon viele so Tabellen gesehen: > > id autoincrement > benutzername unique > ... > > > wenn ich in einer Tabelle eine Spalte habe die UNIQUE sein muss, dann ist es > unnötig den Platz zu verschwenden und noch zusätzlich eine autoincrement > Spalte anzulegen, das führt nur zu einer Verwässerung der Datenbankstruktur > => unnötiger Platzverbrauch, Fehlerquelle. das sehe ich etwas anders. Ich hatte zum Beispiel mal die Aufgabe, ein Buchungssystem für Konferenzräume zu schreiben. Natürlich bekommt man von den Auftraggebern die Information, daß alle Räume eine eindeutige Raumnummer haben. Es gibt jedoch zwei entscheidende Gründe, warum man in diesem Fall die Raumnummer nicht als Schlüssel verwenden sollte. 1. die Raumnummer ist ein Stringfeld. Der Vergleich zweier Strings dauert wesentlich länger als der zweier Integerzahlen. 2. die Raumnummer ist zwar eindeutig, aber nicht stabil. Man ist nicht gefeit vor Managern, welche einen neuen Algorithmus zur Vergabe von Raumnummern einzuführen (auch wenn die meisten Manager nicht wissen, was ein Algorithmus ist). > (ja, ich weiss dass es genau in diesem Fall da es um Benutzerdaten geht mal > aus Sicherheitsgründen ratsam sein mag im Verlauf der Seiten nur noch eine > kryptische ID und nicht mehr den Benutzernamen weiterzureichen, es geht mir > hier aber nur darum dass es eben nicht die hohe Kunst der > Datenbankerstellung ist _jede_ Tabelle mit einer Autoincrementspalte zu > versehen sondern eben zu überlegen ob sie es wirklich braucht) Wie Du siehst, macht es grundsätzlich Sinn, Userdaten (Raumnummer) von Systemdaten (ID-Spalte) zu trennen. Das hat primär nichts mit Sicherheit zu tun, sondern damit, (wo wir gerade bei Fehlerquellen sind) daß man alle Schlüsselwerte in allen abhängigen Tabellen ändern muß, wenn der User den Hauptschlüssel ändert. Ich mache mir niemals Gedanken, ob ich die Spalte brauche oder nicht, denn ich brauche sie fast immer und sie gehört quasi zu meinem Paradigma der DB-Erstellung. Ciao Alex
php::bar PHP Wiki - Listenarchive