2012-11-26 78 views
0

我想將評論存儲在靈活的類別和子類別系統中,並且目前正在爲此設計數據庫結構。我有一個想法如何做到這一點,但我不完全確定它是否無法做得更加優雅和/或高效。這些是我的想法 - 如果任何人都可以評論如何/如何改進,我會非常感激。靈活類別/子類別系統中條目的最佳數據庫結構?

(爲了保持這個帖子簡明扼要,我只列出重要領域的表)

1)的評語是存儲在表「審查」。它具有以下字段:

id: uniquite ID, auto-incrementing. 
title: the title that will show up in <head><title>, etc. 
stub: a version of the title without spaces, special chars, etc. so it can be part of the URL/URI 
text: the actual content 

2)所有類別都在同一個表中「類別」

id: unique ID, auto-incrementing. 
title: the full title/name of the categorie how it will be output on the website 
stub: version of the title that will be shown in the URL/URI. 
parent_id: if this is a subcategory, here is the categories.id of the parent category. Else this is 0. 
order_number: simple number to order the categories by (for display in the navigation menu) 

3)現在我需要一個指示器,其評語是在哪些類別。可以在多個。我的第一個想法是將「review_list」字段添加到類別中,並讓它包含所有的應該在這個類別中的reviews.id。不過,我認爲在類別中添加和刪除評論將是一件麻煩和「不雅」的事情。所以我目前的想法是有一個表「review_in_category」,併爲每個審查類別關係有一個條目。其結構是:

id: Unique ID, auto-increment. 
review_id: the reviews.id 
category_id: the categories.id 

所以,如果一個評論是在3級不同的類別,將導致在「review_in_category」表3項。

這個想法是,當用戶打開www.mydomain.de/animation/sci-fi/時,包裝腳本會將URL分解爲其部分。如果它找到category.stub =「sci-fi」的多個類別,它將檢查哪些類別具有存根「動畫」的父類別。一旦確定了正確的類別(大多數情況下存根是唯一的,因此可以跳過此檢查)我想從「review_in_category」中選擇所有review_id,其中category_id與由包裝器腳本確定的category_id匹配。所有review_id都放入數組中。循環將循環訪問該數組,並通過「SELECT標題,存根FROM評論WHERE id = review_list [$ counter]」來編寫列出所有評論標題的SELECT語句(並使用存根值創建指向它們的鏈接),然後添加「OR id = review_list [$ counter]「,直到數組完全移動。

所以我的問題是: - 是我創建一個SELECT語句具有潛在的大量「或ID =」部分來處理這種情況還是有更好的變體的「高貴」和/或有效的方式方法? - 使用「分類法」風格表(review_in_category)是否有意義,或者將「會員」/「關係」直接存儲在評論或分類表中會更好嗎? - 任何其他想法......我剛開始學習這些東西,並感謝任何反饋。

謝謝

回答

0

您的設計看起來很健康。

要檢索類別中的所有評論,你應該使用一個連接:

SELECT reviews.title, reviews.stub FROM reviews, review_in_category WHERE reviews.id = review_in_category.review_id AND category_id = $category 
相關問題