Zitat:
|
Zitat von achtelpetit Das Diskussionsniveau dürfte übrigens ruhig etwas angehoben werden; ich meine das Abwägen von Vor- und Nachteilen der verschiedenen möglichen Lösungen. Das Thema hätte es verdient. |
Es wurden etliche Nachteile der Primzahllösung genannt.
- Wie soll eine „User-ID muss Primzahl sein“-Einschränkung durchgesetzt werden? In der Anwendungslogik? Dann ist nichts gewonnen.
- Was hält eine andere Tabelle davon ab, auch mit den User-IDs „zu rechnen“ und beispielsweise zu definieren, dass alle IDs, die glatt durch 100 geteilt werden können, Administratorrechte bekommen? Das ist eine dumme Idee und geht dann halt nicht? – Nein. Die einzige sinnvolle Lösung ist es, so was keiner Tabelle zu erlauben.
- Wie können aus den Primzahlen alle Freunde eines Nutzers ermittelt werden? Nur per Full Table Scan und Primfaktorzerlegung. Keine Option. Dass das nicht zur Aufgabenstellung gehört, ist spitzfindig. Eine Lösung, die für einen einzigen Anwendungsfall taugt (prüfen, ob zwischen zwei bekannten User-IDs eine Freundschaftsbeziehung besteht), aber für nahe liegende verwandte Anwendungsfälle versagt, ist nicht optimal.
Die 190 Mio. Primzahlen in einem BIGINT (oder was das war) dürften übrigens auf den Bereich der Wurzel des BIGINT-Wertebereichs zusammenschrumpfen, wenn in einer anderen Spalte das Produkt gehalten werden soll. Das wären alle Primzahlen bis ca. 65.500.