2010-08-11 22 views
0

我有一些具體的問題需要解決,但我想不出來。我應該如何爲這個問題設計數據庫ER圖

我有我需要存儲在我的數據庫中的5-6條語句。這個系統就像新聞提要一樣。

  1. 聲明1:A安裝此網站。
  2. 聲明2:加入商店ř provinceX
  3. 聲明3:審查商店ř
  4. 聲明4:編輯商店ř
  5. 聲明5:A加入產品Pproduct_category1
  6. 聲明6:審查產品P

注意,大膽的是動態的數據,如A,B是一些preson的名字,店裏R是store'name將對方添加。

在我的想法,我有

  • person_table(ID,姓名,年齡,...)
  • store_table(SID,STORE_NAME,province_id,...)
  • product_table(PID, product_name,...)

和feed_table怎麼樣?

我如何設計數據庫來存儲這些數據。和我如何查詢這些數據來查看。

謝謝

回答

1

有兩種方法來這樣的問題:

  1. 你設計的,你有沒有信息的重複這樣你的表。基本上,您感興趣的Feed可以通過現有的表格以高性能的方式構建;或

  2. 您重複某些數據以使您的Feed更易於實施。

個人而言,我可能會去(2),並有一個新的表:

  • 飼料:ID,爲person_id,STORE_ID,的action_id,province_id,product_category_id

與上兩個字段是可選的,基於行動(審查,編輯,添加等)。

純粹主義者會認爲重複的數據是不好的(當然,正常形式試圖將它分解出來),但是在現實世界中,數據庫模式出於性能原因始終這樣做。

想想這樣:你在你的應用程序中花了多少時間做什麼?

  1. 查看飼料(閱讀);或
  2. 正在做(寫作)。

如果它是(1),我懷疑它是,那麼飼料表是有道理的。您通常希望優化讀取而不寫入,因爲寫入發生的次數少得多。

+0

+1:這可能是我採取的方法 - 您還需要一個product_id字段。 – RedFilter 2010-08-11 03:30:59

+0

什麼是action_id? – Giffary 2010-08-11 04:03:17

+0

@Giffary'action_id'只代表動作(編輯,添加,評論)。你可以使用純文本,或者可以在另一個表中列出操作,因此'action_id'(作爲操作表的外鍵)。它是名義上的。 – cletus 2010-08-11 05:12:11