2016-12-16 15 views
-1

Ich habe eine Frage zum Datenbank-Design.Über das Entwerfen einer Datenbank

Welches ist besser Design für relativ große Datenbank-System;

Design1 enter image description here

Design2 enter image description here

Meiner Meinung nach ich bequem mit dem zweiten, aber die erste ist traditioneller als die zweite, denke ich.

Was sind Ihre Gedanken?

+0

Bitte bearbeiten Sie Ihre Frage, um zu erklären, wie wir das zweite Diagramm lesen sollen. – philipxy

+0

@philipxy Ich denke die Diagramme sind sehr klar. Auf der ersten Seite speichern wir die Telefonnummern der Schüler in einer anderen Tabelle, und auf der zweiten speichern wir die Kursteilnehmer-Telefonnummern in derselben Tabelle mit XML. –

Antwort

3

Weder. Was, wenn zwei Studenten in einem Wohnheim leben und die gleiche Telefonnummer haben (ein Wohnheimtelefon), oder leben Geschwister zu Hause? Die Telefonnummerntabelle sollte ein zusammengesetzter Schlüssel mit phonenumber, undstudentId als zusammengesetzter Primärschlüssel sein. Dies spiegelt eine sogenannte Viele-zu-Viele oder assoziative Beziehung wider, die nicht einfach in XML dargestellt werden kann.

Das folgende Schema geht davon aus, dass jeder Student den "Typ" des Telefons bestimmen muss, für das er/sie diese Leitung verwendet. Wenn der Telefontyp nur vom Telefon bestimmt wird, fügen Sie eine weitere separate Tabelle für die Telefonnummern und Telefontypen ohne studentId hinzu, und geben Sie in das Feld phoneNumber in der assoziativen Tabelle einen Fremdschlüssel (FK) für dieses neue Telefon ein Tabelle

enter image description here

+0

Vielen Dank für Ihre Antwort, ich werde Ihre Korrektur begleiten. Aber das ist nicht die Antwort, die ich suche, was ich lernen möchte ist "Welcher Ansatz ist nützlicher, Beziehungen oder XML?" Nochmals vielen Dank. –

+0

Ahhhh, wenn das alles ist, interessiert dich dann relational ist die Antwort. Sie können nicht einfach eine Viele-zu-Viele-Beziehung in XML herstellen. –

0

würde ich mit Design-1, aber mit einer Änderung gehen. Die Telefonnummerntabelle würde jedoch Studenten-ID als Primärschlüssel haben. Auf diese Weise können Sie mehr als einen Studenten das gleiche Telefon verwenden, was für mich ein völlig normales Szenario ist.

+0

Vielen Dank für Ihre Antwort, ich werde Ihre Warnung berücksichtigen. –

+0

Wenn die Telefonnummerntabelle 'studentId' als Primärschlüssel hat, kann es nur einen Datensatz pro Schüler geben. Nein, es muss einen COMPOSITE-Primärschlüssel geben, auf 'studentId' und' phoneNumber'. –

0

Ich würde dies nicht überdenken, indem ich die Telefonnummern zu einer potenziell unendlichen Liste normalisieren würde.

Wie viele/welche Art von Telefonnummern benötigen Sie wirklich für einen Schüler? Brauchen Sie zum Beispiel eine Faxnummer? Vielleicht benötigen Sie eine Laufzeit und eine nicht-term Zeit?

Es scheint viel wahrscheinlicher, dass Sie eine einzelne primäre Nummer und eine Alternative benötigen, und diese können in der Student-Tabelle selbst gespeichert werden.

+0

Als Sie für Ihre Antwort. Aber ich habe bemerkt, dass ihr alle von meinem kleinen Schülerbeispiel besessen seid, ich habe diese Datenbank nur für "Beispiel" Zwecke entworfen. Was ich wirklich lernen möchte, ist die Verwendung von XML ist eine schlechte Praxis für das Entwerfen von Datenbanken. –

+0

@OnurEryilmaz Wir können nur die Frage beantworten, die du gestellt hast, und Leute zu charakterisieren, die sich Zeit genommen haben, um als "besessen" zu helfen, ist ziemlich unhöflich. Sie sollten gefragt haben: "Verwendet XML eine schlechte Übung zum Entwerfen von Datenbanken?", Oder besser gesagt, es wurde auf eine der vorhandenen Fragen zu diesem Thema verwiesen. –

+0

Es tut mir leid wegen meiner Sprache, ich dachte nicht "besessen" ist unhöflich. Aber wie ich in meiner Frage frage, "welches Desing" ist besser. Ich habe nicht gefragt "Ist mein erstes Diagramm falsch?". Aber nochmal, es tut mir leid. –

Verwandte Themen