2014-10-29 10 views
8

Ich habe diesen Code in PostgreSQLUnterstützt MySQL Tabellenvererbung?

CREATE TABLE first (
    id serial, 
    primary key(id) 
); 

CREATE TABLE second (primary key(id)) INHERITS (first); 

Was der entsprechende Code für MySQL ist?

+0

MySQL hat keine Vererbung wie PostgreSQL. –

Antwort

6

MySQL unterstützt Tabellenvererbung nicht. Die einzige Möglichkeit, die Funktionalität zur Annäherung ist durch einen Fremdschlüssel (die MySQL nicht allzu gut an beide ist):

CREATE TABLE first (
    id serial, 
    PRIMARY KEY (id) 
); 

CREATE TABLE second (
    parent integer REFERENCES first, 
    PRIMARY KEY (parent) 
); 

Offensichtlich würden Sie alle Ansichten und Abfragen aus dem PostgreSQL „Vererbung Version ändern müssen "zu regelmäßigen Multi-Relation-Abfragen.

+0

gibt es einen bestimmten Grund (wie Leistung bezogen), dass MySQL es nicht unterstützt? – sajadkk

+0

@sajadkk Ich bin mir nicht der Leistungsprobleme mit der Vererbung bewusst, aber es ist ein relativ neues Konzept und hat immer noch einige Implementierungsdefizite. Die PostgreSQL-Vererbung ist beispielsweise nicht SQL-konform, und nicht alle Abhängigkeiten werden vererbt, so dass man beim Arbeiten mit Vererbung wirklich vorsichtig sein sollte. (MySQL ist übrigens weit weniger kompatibel mit SQL-Standard als PostgreSQL, obwohl ich in letzter Zeit keine Verbesserungen vorgenommen habe.) Wenn Sie wirklich keine Vererbung für ein Datenmodell benötigen, sind Sie wahrscheinlich mit einer relationalen Standardstruktur besser dran. – Patrick

+2

"* aber es ist ein relativ neues Konzept *" - das stimmt eigentlich nicht. Objektrelationale Konzepte gehen weit in die 80er zurück –

Verwandte Themen