Ich entwerfe gerade eine Datenbankstruktur für das Projekt unseres Teams. Ich habe gerade diese Frage im Hinterkopf: Ist es möglich, einen Fremdschlüssel als Primärschlüssel an einem anderen Tisch zu haben?Kann ein Fremdschlüssel als Primärschlüssel fungieren?
Hier sind einige der Tabellen der Datenbank-Design unseres Systems:
user_accounts
students
guidance_counselors
Was ich ist, dass die user_accounts
Tabelle sind die IDs (angeblich die Login-Berechtigungsnachweis für das System) und Passwörter von beiden enthalten sollte passieren wollte die Benutzer der Studenten und die Berater der Beratungsberater. Kurz gesagt, die Primärschlüssel der Tabellen und guidance_counselors
sind auch die Fremdschlüssel aus der Tabelle user_accounts
. Aber ich bin mir nicht sicher, ob es erlaubt ist.
Eine andere Frage ist: ein student_rec
Tabelle existiert auch, die eine student_number
erfordert (die user_id
in der user_accounts
Tabelle ist) und ein guidance_counsellor_id
(das ist auch die user_id
im user_accounts
) für jeden seiner Rekord. Wenn sowohl die IDs eines Studenten als auch die eines Beraters aus der user_accounts table
stammen, wie würde ich die Tabelle student_rec
entwerfen? Und wie schreibe ich es manuell als SQL-Code für zukünftige Referenz?
Das hat mich gestört und ich kann keine spezifische oder sichere Antwort auf meine Fragen finden.
Während die Antwort auf Ihre Frage ist "Ja, ein Primärschlüssel kann auch als Fremdschlüssel fungieren", wäre meine Empfehlung, dies zu vermeiden. Die gleiche Beziehung kann unter Verwendung von diskreten Primärschlüsseln und Fremdschlüsseln ausgedrückt werden, und das Überladen einer Spalte mit mehreren Verantwortlichkeiten kann Schwierigkeiten auf der Straße verursachen. Wenn der Primärschlüssel beispielsweise ebenfalls eine Identitätsspalte ist oder automatisch über eine ORM-Richtlinie mit einer GuidComb-Strategie zugewiesen wird, werden Sie sich wahrscheinlich zwei oder mehr Transaktionen ansehen. Das Single-Responsibility-Prinzip ist auch gut für das Datenbankdesign. –