2015-05-03 65 views
1

我在存儲廣告的地方製作數據表。數據庫中的Mysql關係

我的廣告表看起來如下:

Advertisement: 
id (PK) 
title 
description 
category_id (FK) 
.. 

我有2種不同類型的廣告:我店的汽車,我存儲房地產。 因此,我對這兩種類型都有不同的屬性。即汽車有一個品牌和門的數量,而房地產有多少房間..

因此,我想問問什麼是最好的方式來存儲這種關係。

我應該把所有的值放在一個大的廣告表中,但是有一些值總是空的缺點。

或者我應該製作2個附加表格並在廣告表格中保留常用值?

CarTable 
id(PK) 
advertisement_id (FK) 
brand 
numberOfDoors 
... 

RealEstateTable 
id(PK) 
advertisement_id (FK) 
nrOfRooms 
... 

我不認爲帶有2個附加表的第二個解決方案非常好。 有什麼建議嗎?謝謝

回答

0

的方法之一可能是:

Advertisement: 
id (PK) 
title 
description 
category_id (FK) 
.. 

Attribute type: 
id (PK) 
name 
code (can be optional) 

Advertisement's attributes: 
id (PK) 
Advertisement id (FK) 
Attribute id (FK) 
Attribute value 
0

我覺得第二個是正確的。 當然,它取決於數據庫有多大以及有多少個空列。 我想是因爲:

  1. 將有類型

  2. 通常我們正使用「SELECT * ......」條款,但很多列的表的差異沒有任何空單元格是不好的,在你的情況下所有這些NULL字段將加載流量

  3. 在所有的數據庫引擎進行了優化,使表之間的關係 - 如果你有硬定義關係的關鍵,這不是一個問題。

+0

所以在那種情況下,我有廣告 - CarTable和Advertisement - RealEstateTable之間的一對一關係?有了這個解決方案,我應該在廣告表中創建另一個屬性來保存廣告的類型,如果它是汽車或房地產?如果我搜索不同表格的所有主題,該怎麼辦? – Steve