2016-05-04 18 views
2

Dies ist eine Frage über das korrekte "Benennen von Dingen". Genauer gesagt, wie unterscheiden Sie zwischen:Ist eine "Join-Tabelle" das Ergebnis eines SQL-JOIN oder die Tabelle zwischen einem Viele-zu-Viele

  1. dem "zwischen" Tisch in einer many-to-many-Beziehung (zB users, users_questions, questions)
  2. die (temporäre) Tabelle, die während einer SQL erstellt wird JOIN (zB ‚SELECT * FROM Benutzer INNER JOIN users_questions.user_id ON users.id WHERE users_question.question_id = 37016694;`)
+0

Es ist eine Tabelle, die die "Join" -Beziehung zwischen den anderen Tabellen herstellt. Das Ergebnis einer Abfrage ist eine Ergebnismenge (und * keine * Tabelle); Eine temporäre Tabelle/Speicher in einer Tabellenvariablen/Laden in eine Datentabelle ist anders als eine Ergebnismenge. – user2864740

+0

Die erste ist eine echte Tabelle, die hilft, Ihre Datenbank zu normalisieren. Die Sekunde ist temporär und ist nicht Teil Ihres tatsächlichen Schemas. –

Antwort

5

Viele Datenbank-Designer verwenden die Bezeichnung Tabelle in Ihrem ersten Sinn kommen: a umzusetzen Viele-zu-Viele-Beziehung Ionisation zwischen Entitäten. Es wird auch eine Junction-Tabelle, Zuordnungstabelle und andere Dinge genannt. Weitere Informationen: https://en.wikipedia.org/wiki/Associative_entity

Ich habe noch nie den zweiten Sinn gehört. (Aber, hey, ich bekomme nicht viel heraus. :-) Wenn Sie Dokumentation schreiben oder unterrichten, schlage ich vor, dass Sie das Wort Tabelle reservieren, um eine tatsächliche physische Tabelle zu bezeichnen. Vermeiden Sie das Wort Tabelle für ein Resultset, es sei denn, Sie qualifizieren es durch Angabe virtuelle Tabelle oder eine solche Phrase. Auf diese Weise werden Ihre Leser und Schüler keine Zeit damit verschwenden, die Definitionen dieser Nicht-Wirklich-Tabellen in Ihrem Schema zu finden.

+0

Ich bin nicht einmal sicher, was er im zweiten Sinne meint - er hat eine Anfrage mit einem Join - wo ist der temporäre Tisch? – Hogan

+0

Ich habe am häufigsten die Junction-Tabelle gehört, oder die "zwischen" -Tabelle, die als Verknüpfungstabelle bezeichnet wird. –

+0

Ich habe immer die "zwischen Tabelle" als Querverweistabelle bezeichnet, manchmal mit dem Präfix "Xref" wie "Xref_User_Questions" –

0

aus relationaler Sicht eine JOIN Tabelle reale physische Tabelle (eine Tabelle, die many-to-many Beziehung löst) ist. Sonst würde es zwischen Anfragen nicht überleben. Meiner Meinung nach wurde der Begriff "join table" von MVC "Code First" -Entwicklern geprägt, die physische Objekte im DB-Bereich ignorieren, insbesondere wenn sie nicht in DbContext angezeigt werden.

Meiner Meinung nach, wieder sollten wir relationalen Realitäten ehren.

Also hilf mir Codd.