Hi,
Hallo,
für eine Webapplikation muss eine sehr effiziente Suche durch Indizes implementiert werden.
Im Datenmodell habe ich die Daten nach 3. Normalform in Look-Up-Tabellen organisiert. Das heißt, dass im Prinzip immer nur die Ziffer, die ohnehin der Primärschlüssel ist, als Index vorhanden ist, und diese Ziffer auch im Endeffekt bei der Suchabfrage selektiert wird.
1. Normalformen haben nicht direkt etwas mit Lookup Tabellen zu tun.
2. Normalformen haben nichts mit Indices zu tun
3. Normalform bedeutet auf keinen Fall, dass man nur nach Primärschlüsseln suchen darf.
Vielleicht schaust du dir nocheinmal genauer an, wie Normalformen genau definiert sind, und wieso sie dies sind (Überhaupt nicht böse gemeint - es ist nicht sonderlich einfach!)
Die zu implementierende Suche der Webapplikation wird aber aus vielen Einzeltabellen die Daten zusammenglauben, d.h zB
Aus Tabelle A den Eintrag 3
Aus Tabelle B den Eintrag 2
Aus Tabelle C den Eintrag 7
Aus Tabelle D den Eintrag 5
Habe ich es richtig verstanden, dass du eine Tabelle mit den Daten hast, die Foreign Keys zu A,B,C,D enthält, und du nach diesen suchen möchtest?
Jetzt meine Frage dazu:
Ist die Suche so eigentlich effizient, wenn die Indizes Tabelle für Tabelle gesetzt sind (wie sie aufgrund des PK ohnehin sind), oder wäre es noch effizienter, wenn ich einen Index so anlege, dass ich sage, dass "Index XYZ aus PK / TabA, PK / TabB, PK / TabB, PK / TabC" besteht, also ein zusammengesetzter Index aus den Primärschlüsseln von 4 Einzeltabellen sozusagen?
Falls dem so ist, wie verhält sich das DBMS, wenn ich irgendwann nur doch nach 3 Werten dieser 4 aus dem zusammengesetzten Index suchen muss?
Geht das DBMS dann so vor, dass es erst wieder die Einzelindizes abfragt, oder nimmt das DBMS trotzdem den zusammengesetzten Index, da ja hier bereits 3 der 4 Werte "zusammen gespeichert" sind?
Alle diese Fragen kann man nicht allgemein beantworten - sie sind abhängig vom jeweiligen Datenbanksystem.
Welches verwendest du denn?
Grüße,
Andres Freund