我有以下实体:住宅列表、商业列表、租赁列表和特色列表,其中包含每个用户的特色属性。最合乎逻辑的似乎是利用超类型/子类型方法并创建下表:
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?如果不是,那么这种场景的最佳设计是什么?