2010-10-14 185 views
0

我有兩個模型 - 用戶和餐廳。他們可以設置狀態消息等推文並可以回覆。我有以下設置,需要您的幫助來優化設計。需要數據庫設計幫助

用戶(ID,姓名,......) 餐館(ID,姓名.....)

模塊(ID,名稱)[此表存儲模塊 - (1,用戶),(2,餐廳)

我的消息表

status_messages(ID,PID,消息,時間,模塊id,的moduleId)

ID - UID,主鍵 PID - 自身ID或父ID - 用於容納對相同表格的回覆。 消息 - 狀態消息存儲在這裏 時間 - 狀態消息設置 是模塊的時間 - 指的是模塊的指向 - 用戶或Restaruants 的moduleId - 實際foriegn關鍵

這是正確的方式去關於 ?

應用程序的規模 - 這將是一個開放的應用程序在全世界範圍內。所以一張桌子可以擴展到所有的餐廳和用戶。

  1. 我想有一個類似的模型的評論,將迎合餐廳,菜餚,事件,自助餐......在一張桌子上。它會是一個過度殺手。
+0

什麼是模塊? – 2010-10-14 12:35:22

+0

我只是打電話給用戶和餐廳模塊。 – 2010-10-14 12:45:16

+1

我不明白你想要完成什麼,但在你的status_messages表中有兩個模塊ID看起來很奇怪。另外,爲什麼與用戶表沒有關係? – dhofstet 2010-10-14 13:45:53

回答

1

是的,這個設計應該沒問題,你會想在status_messages.module_id列放置某種索引,以便表格上的選擇可以被用戶/餐廳過濾。

通常在服務器端,您將創建兩個類的狀態信息表

1類UserMessages 二等RestaurantMessages

,並使用某種ORM工具的定義是模塊作爲decriminator列。所以在數據庫中它在一個表中最大化重用。但在應用程序上它有兩個不同的名稱(邏輯名稱)。不知道這是如何工作在PHP中。

+0

也許你應該考慮將Module重命名爲ParentTable,以便其他人可以理解你的命名更好。 – Daveo 2010-10-14 23:39:42

+0

謝謝。是的,我猜人們感到困惑。與命名約定:D – 2010-10-15 08:25:03