我有以下实体:住宅房源、商业目录、租赁市和特色列保持功能性,为每个用户。最合乎逻辑的似乎是利用超类型/子类型办法,并创建以下表:

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.不能create table'住宅'(errno:150)"

也许我言是不正确的。或是它甚至可能有PK其在同一时间是FK在MySQL?如果不是,什么是最好的设计对于这样的情况?

有帮助吗?

解决方案

根据你使用MySQL的发动机,外键不支持。如果你正使用InnoDB虽然我不知道,如果ID可以是FK他们的支持。我不明白为什么不能。

如果使用的是MYISAM FKS不被支持。

还有一个机会,这是失败,因为外键的列名都不在括号内。

FOREIGN KEY id REFERENCES listings(id)

变为

FOREIGN KEY (id) REFERENCES listings(id)

两者有这个问题。

雅各

其他提示

  • 更改名称之外的关键的"住宅"表。
  • 确保父母表中的存在。
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top