2010-02-19 66 views
2

我有以下實體:住宅列表,商業列表,租賃列表和特色列表,其中包含每個用戶的特色屬性。最合乎邏輯似乎利用超/亞型的方法,創建下表:幫助Mysql數據庫設計

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呢?如果不是,這種情況下最好的設計是什麼?

回答

3

根據您在MySQL中使用的引擎,不支持外鍵。如果您使用的是INNODB,則支持它們,但我不確定id是否可以是FK。我看不出爲什麼。

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

由於外鍵的列名不在括號內,因此它也有可能失敗。

FOREIGN KEY id REFERENCES listings(id) 

成爲

FOREIGN KEY (id) REFERENCES listings(id) 

兩者都有這個問題。

雅各

+0

啊,沒關係。即使我指定InnoDB爲「住宅」表,我忘了將「列表」表更改爲InnoDB。現在它可以工作。 – Zhaidarbek

0
  • 變化的「住宅」表的外鍵的名稱。
  • 確保父表存在。