2010-08-02 246 views
0

我正在使用cakePHP 1.26。
我打算在localhost上構建一個非常簡單的論壇。
這裏是數據庫的概念設計:
需要一些關於我的數據庫設計的建議

表:
用戶{USER_ID,姓名,日期}
主題{POST_ID,標題,內容,日期}
回覆{POST_ID,內容,日期}
報價{quote_post_id,post_type,POST_ID}

用戶可以具有許多主題
用戶可以具有許多回復
甲主題可具有許多報價
答覆可能有很多報價
(這兩個主題和答覆可能會被引用一次或多次)

請幫助和建議。

回答

3

用戶{ID,名稱,日誌名,密碼}

主題{ID,標題,內容,日期,USER_ID}

回覆{ID,內容,日期,topic_id,USER_ID}

我不確定Quote ...我不知道爲什麼不符合Reply

+0

就像主題有一個用戶並且答覆有一個用戶一樣,如果只有主題可以被引用,則引用可能也有一個用戶 - 也可能有一個主題。如果爲true,則將user_id和post_id添加到表格引用。 – 2010-08-02 13:37:43

+0

我的印象是行情就像引用。這是帖子之間的多種關聯。複雜性很明顯,主題或答覆可以引用主題或答覆。 – 2010-08-02 13:47:56

1

您明確想要引入一個名爲id的字段,因爲它是表users中的id字段時命名字段user_id有點多餘。除此之外,cakephp還將一些字段視爲automagicAutomagic意味着cakephp可以在沒有你的情況下識別外鍵 - 開發者必須明確指定它們。但爲了有cakephp幫助你automagic你必須堅持幾個約定。曾經學過的這些慣例中的一個非常方便,就是一旦您將它們命名爲YOUR_MODEL_NAME_IN_SINGULAR_HERE_id,就會自動檢測到外鍵。 例如:作者has許多的職位,職位belongsTo作者(*)。在這種情況下,您可以將外鍵作爲autor_id存儲在表posts中。稍後,當您使用cake bake腳本或腳手架功能時,您將會了解會議的力量!

我在你的文章中注意到的另一件事是,它可能是你會錯過,在cakephp關係建立雙向。這意味着您不僅可以使用單個定義,還可以同時在另一個方向定義一個hasMany定義。

因此,我建議你改述你的陳述,以便實施後期更酷。

1

我要去嘗試採取thelost的回答不同的方向:

用戶{ID,名稱,日誌名,密碼}

郵政{ID,標題,內容,日期,parent_post_id,USER_ID}

報價{POST_ID,quoted_post_id}

在這個模型中,一個帖子是一個話題,如果parent_post_id爲NULL。回覆將parent_post_id設置爲其主題的ID。 (或者你可以允許回覆的樹結構。)

警告:我的經驗是在正常的SQL。我不知道cakephp中的工作是如何工作的,所以其他人將不得不幫助你。