2

私は次のエンティティを持っています:住宅リスト、商業リスト、リースリスト、および各ユーザーの注目プロパティを保持する注目リスト。最も論理的なのは、スーパータイプ/サブタイプのアプローチを活用し、次のテーブルを作成するようです。

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)
)

しかし、レジデンシャルテーブルを作成しようとすると、Mysqlはエラー「MySQLエラー番号1005。テーブル'レジデンシャル'を作成できません(errno:150)」を返します。

たぶん私のDDLが間違っています。それとも、MySQLで同時にFKであるPKを持つことさえ可能ですか?そうでない場合、そのようなシナリオに最適な設計は何ですか?

4

2 に答える 2

3

MySQLで使用しているエンジンによっては、外部キーはサポートされていません。INNODBを使用している場合はサポートされていますが、idをFKにすることができるかどうかはわかりません。理由がわかりません。

MYISAMを使用している場合、FKはサポートされていません。

外部キーの列名が括弧内にないために失敗する可能性もあります。

FOREIGN KEY id REFERENCES listings(id)

になります

FOREIGN KEY (id) REFERENCES listings(id)

どちらにもこの問題があります。

ジェイコブ

于 2010-02-19T05:40:42.480 に答える
0
  • 「residential」テーブルの外部キーの名前を変更します。
  • 親テーブルが存在することを確認してください。
于 2010-02-19T05:42:58.937 に答える