首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >帮助设计Mysql数据库

问帮助设计Mysql数据库
EN

Stack Overflow用户
提问于 2010-02-19 13:37:18
回答 2查看 95关注 0票数 2

我有以下实体:住宅列表,商业列表,租赁列表和特色列表,其中持有每个用户的特色属性。最符合逻辑的方法似乎是利用超类型/子类型方法并创建以下表格:

代码语言:javascript
复制
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.无法创建表‘住宅’(错误号: 150)“

也许我的DDL是错误的。或者有没有可能在MySQL中同时拥有PK和FK?如果不是,这种情况下最好的设计是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-02-19 13:40:42

根据您在MySQL中使用的引擎,不支持外键。如果您使用的是INNODB,那么它们是受支持的,尽管我不确定id是否可以是FK。我看不出有何不可。

如果您使用的是MYISAM,则不支持FK。

它也有可能失败,因为外键的列名不在括号内。

代码语言:javascript
复制
FOREIGN KEY id REFERENCES listings(id)

变成了

代码语言:javascript
复制
FOREIGN KEY (id) REFERENCES listings(id)

两者都有这个问题。

雅各布

票数 3
EN

Stack Overflow用户

发布于 2010-02-19 13:42:59

  • 更改"residential“表中外键的名称。
  • 确保父表存在。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2294289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档