Optimale Methode der Tabellenverknüpfung

Roble

Benutzer
Beiträge
6
Hallo zusammen,

als Anfänger frage ich mich, wie eigentlich Tabellen einer MySQL-DB optimal aufgebaut und verknüpft werden sollten.
Zunächst einmal gebe ich jeder Tabelle einen Primärschlüssel / eine ID.
Danach meine Fragestellung.
Ist es sinnvoll, _allen_ Tabellen der n-Seite (z.B. bei 1:n-Verknüpfungen) Fremdschlüssel-Spalten zu geben (vgl. Access-DBs), arbeitet man grundsätzlich am besten mit Hilfstabellen, welche die Verknüpfung herstellen (wie bei m:n-Verknüpfungen) oder läßt man den ganzen Fremdschlüsselkram und verknüpft nur mit sql-Anweisungen (left join ... ) ?
Wahrscheinlich ist Eure Antwort: Das kommt darauf an ... ;-)
Aber was bedeutet dann "darauf", sprich: welche Kriterien entscheiden über die geeignetste Methode?

Danke für alle Tipps
 
Werbung:

akretschmer

Datenbank-Guru
Beiträge
9.731
Hallo zusammen,

als Anfänger frage ich mich, wie eigentlich Tabellen einer MySQL-DB optimal aufgebaut und verknüpft werden sollten.
Zunächst einmal gebe ich jeder Tabelle einen Primärschlüssel / eine ID.
Danach meine Fragestellung.
Ist es sinnvoll, _allen_ Tabellen der n-Seite (z.B. bei 1:n-Verknüpfungen) Fremdschlüssel-Spalten zu geben (vgl. Access-DBs), arbeitet man grundsätzlich am besten mit Hilfstabellen, welche die Verknüpfung herstellen (wie bei m:n-Verknüpfungen) oder läßt man den ganzen Fremdschlüsselkram und verknüpft nur mit sql-Anweisungen (left join ... ) ?
Wahrscheinlich ist Eure Antwort: Das kommt darauf an ... ;-)
Aber was bedeutet dann "darauf", sprich: welche Kriterien entscheiden über die geeignetste Methode?

Danke für alle Tipps


Fremdschlüssel. Nur so kann die DB referentielle Integrität herstellen.

Übrigens arbeitet MySQL deutlich besser, wenn man es vor Benutzung gegen eine richtige Datenbank austausch ;-) (weil Du Anfänger bist)
 

akretschmer

Datenbank-Guru
Beiträge
9.731
?? ;-)
Was ist denn Deiner Meinung nach eine "richtige DB" ?

Eine, die sich möglichst an die SQL-Spec hält, eine die "create table foo (i int check (i < 5))" dann auch prüft, die einen gescheiten kostenbasierten Planner hat, die funktionale und partielle Indexe erlaubt, die je Query und Table mehr als einen Index nutzen kann, die CREATE INDEX CONCURRENTLY unterstützt, die mir eine Reihe interne Programmiersprachen bietet, viele Datentypen bis hin zu RANGE-Typen hat, massig Funktionen für alle Typen hat und unter einer sauberen BSD-Lizenz liegt, um einige Dinge aufzuzählen (nicht alle). Oder kurz: PostgreSQL.
 
Werbung:
Oben