Einzelnen Beitrag anzeigen
  #6 (permalink)  
Alt 06.04.2005, 00:27
s0nic s0nic ist offline
C2 mediaproduction
neuer user
 
Registriert seit: 04.04.2005
Ort: Leipzig
Beiträge: 62
s0nic befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von The Doc
Verstehe ich das richtig, eine Tabelle, für alles? Oder was meintest du mit "Normalformen"?
Nur eine Tabelle zu benutzen, wäre sehr wahrscheinlich gerade das Gegenteil von dem, was Du machen solltest. Was man unter den Normalformen versteht, kann man gut auf Wikipedia nachlesen - den Link hat wahsaga ja schon gepostet

Zitat:
Zitat von The Doc
Und was meinst du mit "ein Kreuzprodukt forcieren"?
Wenn Du ein select durchführst und als Quelle 2 Tabellen angibst, dann wird ein Kreuzprodukt dieser beiden Tabellen erstellt, d.h. jede Zeile der einen Tabelle wird *allen* Zeilen der anderen Tabelle zugeordnet. Gibt es also in Tabelle A 10 Zeilen und in B 5 Zeilen, so wird Zeile 1 in A genau diese 5 Zeilen in B zugeordnet, so daß in der entstehenden Tabelle 5 Zeilen stehen. Genauso wird dann mit Zeile 2 Aus Tabelle A verfahren usw. Am Ende kommen also 50 Zeilen heraus. Nun stelle Dir 2 Tabellen mit jeweils ein paar tausend Einträgen vor...

Deshalb ist es sinnvoller, Join-Bedingungen anzugeben, z.B. soll der FK (Foreign Key/Fremdschlüssel) der einen Tabelle gleich dem PK (Primary Key/Primärschlüssel) der zweiten Tabelle sein. Die dabei entstehende Tabelle benutzt also die gegebene Bedingung als "Reißverschluß", um beide Ursprungstabellen miteinander zu verknüpfen. Das Resultat ist sehr viel kleiner.

Egal, wie man es macht - man kommt mit beiden Methoden zum Ziel. Gibt man jedoch keine Bedingung an, kann man evtl. ungewünschte Ergebnisse erhalten. Vor allem aber wird es dann viel langsamer.
Mit Zitat antworten