Ich habe 3 Tabellen:Ein Fremdschlüssel Referenzierung mehrere eindeutige Schlüssel
class_A
CREATE TABLE class_a (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
std_id INT NOT NULL UNIQUE,
name varchar(225) NOT NULL)
class_B
CREATE TABLE class_b (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
std_id INT NOT NULL UNIQUE,
name varchar(225) NOT NULL)
sn_number
CREATE TABLE sn_number (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
pin INT NOT NULL UNIQUE,
serial VARCHAR(255) NOT NULL UNIQUE,
std_id INT NULL DEFAULT NULL,
FOREIGN KEY(std_id) REFERENCES class_a(std_id)
)
Wie kann ich verweisen auf eindeutige std_id
in class_a
und Tabelle als Fremdschlüssel in sn_number
Tabelle.
Ich möchte wie etwas erreichen ALTER TABLE sn_number ADD FOREIGN KEY(std_id) REFERENCES class_a(std_id), class_b(std_id)
Ich habe versucht, dies zu tun ALTER TABLE sn_number ADD FOREIGN KEY(std_id) REFERENCES class_a(std_id)
gefolgt von
ALTER TABLE sn_number ADD FOREIGN KEY(std_id) REFERENCES class_b(std_id)
auf sn_number
Tisch, aber halten sich gegenseitig zu überschreiben.
Ich habe diese: Foreign Key Referencing Multiple Tables und
Composite key as foreign key (sql) Aber ich kann die Lösung des Problems nicht gefunden habe.
Dieses Problem ist ein Hinweis für Sie, dass Sie einen Fehler in Ihrem Datenbankentwurf haben. Eine Klasse ist kein Student. Daher würden Sie eine std_id normalerweise nicht an einer Klassen-Tabelle referenzieren, sondern an einer Schüler-Tabelle.Und Sie sollten darüber nachdenken, warum Sie zwei Klassentabellen haben, da Sie möglicherweise das gleiche Problem bekommen, wenn Sie z. Lehrer oder Räume zu Klassen. Grundsätzlich: Es gibt Klassen. Es gibt Studenten. Es gibt sn_numbers. Haben Sie eine Tabelle für jeden, und verknüpfen Sie sie (wenn Sie möchten, können Sie sie buchstäblich zeichnen und durch Linien verbinden). Wenn Sie eine Spezialisierung benötigen, können Sie sie später hinzufügen. – Solarflare
Danke. Das hat mir sehr geholfen. – Abk
@ Abk Im Gegensatz zu dem Kommentar von @Solarflare und einer anderen Antwort ist Ihr Bedarf an zwei Fremdschlüsseln aus derselben Tabelle und Spaltenliste kein Symptom für schlechtes Design. (Obwohl Ihr Design schlecht ist.) Für das Problem mit Ihrem Code sehen Sie meine Antwort. – philipxy