Frage

Ich habe folgende Einheiten: Wohn-Listings, kommerzielle Inserate, leasen Auflisten und funktions Listings, die für jeden Benutzer funktionsfähige Eigenschaften besitzt. Die logischste scheint Einflüsse übergeordneten Typ / Subtyp Ansatz und erstellen folgende Tabellen:

CREATE TABLE listings (
  id ...,
  listPrice ...,
  ...
  PRIMARY KEY (id)
)

CREATE TABLE residential (
  id ...
  ...
  PRIMARY KEY (id),
  FOREIGN KEY id REFERENCES listings(id)
)

CREATE TABLE featuredListings (
  id ..,
  userId ...,
  featuredListingId ...
  PRIMARY KEY (id),
  FOREIGN KEY featuredListingId REFERENCES listings(id)
)

Aber wenn ich versuche, Wohn-Tabelle zu erstellen, Mysql gibt Fehler „MySQL Fehlernummer 1005. Tabelle kann nicht‚Wohn‘(errno: 150) erstellen“

Vielleicht ist mein DDL falsch. Oder ist es sogar möglich, PK zu haben, die in der gleichen Zeit ist FK in MySQL? Wenn nicht, was ist das beste Design für ein solches Szenario?

War es hilfreich?

Lösung

Je nach Motor Sie in MySQL verwenden, werden Fremdschlüssel nicht unterstützt. Wenn Sie INNODB verwenden sie unterstützt werden, obwohl ich bin nicht sicher, ob id ein FK sein kann. Ich kann nicht sehen, warum nicht.

Wenn Sie MYISAM FKs verwenden, werden nicht unterstützt.

Es gibt auch eine Chance, dass es versagt, weil die Spaltennamen der Fremdschlüssel sind nicht in Klammern.

FOREIGN KEY id REFERENCES listings(id)

wird

FOREIGN KEY (id) REFERENCES listings(id)

Sowohl dieses Problem hat.

Jacob

Andere Tipps

  • Ändern Sie den Namen des Fremdschlüssel in der "residential" Tabelle.
  • Stellen Sie sicher, dass die übergeordnete Tabelle vorhanden ist.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top