2017-10-26 3 views
2

Ich studiere Informatik, und vor kurzem in der Prüfung will, hatte ich die folgende Frage:MySQL: Mein Professor eine Tabelle ohne Primärschlüssel

„die SQL-Abfrage, um dieses ER-Modell zu schaffen.“

Das Modell hat drei (3) Tabellen: person, library, und die dritte Tabelle enthält zwei Fremdschlüssel, die jeweils an die Person id und die Bibliothek id angeschlossen sind.

In der mittleren Tabelle (die Fremdschlüssel eins), wurde nicht angegeben, ob die Fremdschlüssel den Primärschlüssel machten, also bat ich ihn, sich zu vergewissern, und er sagte mir, dieser Tisch habe keinen Primärschlüssel.

Das hat mich verwirrt verlassen und weigerte sich, mehr zu erklären, und sagte nur: „es ohne Primärschlüssel funktioniert, sahen wir dies in der Klasse.“

Da das Modell eine Erfassung von phpMyAdmin Designer-Sicht war und weil er nicht wirklich gerechtfertigt. Ich bin dem gegenüber misstrauisch und denke, dass er es versucht hat und dass MySQL ihn das tun ließ, aber das ist falsch. Kann jemand das besser erklären? Ich bin völlig in Ordnung, falsch zu sein, ich will es einfach wissen.

Um es ein wenig klarer zu machen, präzisierte er, dass es überhaupt keinen Primärschlüssel und nicht nur die zwei Fremdschlüssel zusammen gab, wie ich dachte.

Antwort

6

Die "mittlere" Tabelle wird normalerweise als Kreuzung Tabelle bezeichnet. In diesem Fall repräsentiert es Beziehungen zwischen Menschen und Bibliotheken. Wenn Ihr Lehrer erwähnte, dass diese Tabelle keinen Primärschlüssel hat, könnte es sein, dass in der Tabelle kein formeller Primärschlüssel definiert ist. Natürlich muss MySQL jedem Datensatz eine eindeutige ID zuweisen, um intern den Überblick über die Tabelle zu behalten. Aber möglicherweise gibt es keinen expliziten Primärschlüssel. Am wahrscheinlichsten ist jedoch ein zusammengesetzter Primärschlüssel in dieser Tabelle, der aus der Kombination der Spalten people und libraries besteht. Und höchstwahrscheinlich ist dieses Wertepaar in jeder Zeile einzigartig, es sei denn, eine gegebene Beziehung könnte wiederholt werden. Wenn solche Wiederholungen existieren, wird die Tabelle nicht normalisiert.

+0

Ja, es ist, was ich dachte, normalerweise nehme ich zwei fremde Schlüssel zusammen, um einen primären zu erstellen, aber in diesem Fall sagte er * besonders * "überhaupt keinen Primärschlüssel" – Orsu

+0

@Orsu Er kann eine Sache gesagt haben, aber ich Ich wette, er versteht, wie der mittlere Tisch funktionieren soll. –

+0

Vielleicht erwartete er, dass ich trotzdem einen mit "add constraint primärschlüssel blabla" erstellen würde, aber dann würde ich sehr verwirrend finden, dass er sagte "Kein primärer Schlüssel" – Orsu

Verwandte Themen