2011-04-13 85 views
0

我打算爲網站設計數據庫。我們的網站有不同的屏幕。每個屏幕應該有唯一的ID,每個屏幕將是不同的類型。與屏幕相關的信息應存儲在其類型表中。我怎樣才能做到這一點?管理員定製應用程序的MySQL數據庫設計

我的計劃是利用擋拆表下面的字段

屏幕
screen_id
screen_type
screen_type_table_name

Home_screen
home_screen_id
screen_id
語言
內容1
內容2
home_screen_field1
home_screen_field2

aboutus_screen
aboutus_screen_id screen_id
語言
內容1
內容2
about_us_field1
about_us_field2

上述兩個表格的關係是1到多個(屏幕表格到類型表格)。一個屏幕在類型表中可能有很多記錄(用不同的語言)。

這裏的問題是,我無法查詢單個查詢中的數據。當我將表名存儲在屏幕表中時。

任何人都可以在這裏建議最好的數據庫設計?

[編輯]
我不能存儲在同一個表中的信息..

原因:
1)語言約束
2)我需要維護每個內容的修訂
3 )不同類型的每個屏幕。所以每個類型的字段都會有所不同。每個字段的字段數也不盡相同。
4)我無法序列數據太(因爲我需要尋找各種設施)

詢價
隨着畫面ID,我應該能夠獲取在單個查詢的內容。請給我一些建議。
由於事先

感謝
VENU

回答

0

您的Home_screen和Aboutus_screen表格完全相同。你可以嘗試這樣的:

//screens\\ 
screen_id (PK) 
language (PK) 
type_id (FK) 
content1 
content2 

//screen_types\\ 
screen_type_id (PK) 
screen_type_name 

正如你看到的有在屏幕表雙主鍵,你追蹤網頁的類型由外鍵screen_types,如果這是必要的。

+0

我已更新我的問題。實際上,每種屏幕類型都會有不同的字段。 – Venu 2011-04-13 07:31:39

+0

我還是不明白爲什麼你不能把它們放在同一張桌子上,對不起。除非你想讓about_us_field1成爲例如INTEGER和home_screen_field1例如一個VARCHAR。如果它們的數據類型相同,則仍應將它們放在一個表中。 – Brecht 2011-04-13 07:49:21

+0

沒錯,但是home_screen將包含許多其他專用於該主屏幕的字段。我剛纔提到了兩個領域。這也將是不同的類型,每個屏幕的字段不會有所不同。所以我不能把它們放在屏幕表中(假設類型表作爲不同的對象,我剛剛提到了兩個類型表,但也有很多其他類型) – Venu 2011-04-13 08:10:02

0

你爲什麼不保持在一個表中的所有屏幕?你應該這樣做

屏幕 ID, 語言, 內容1, 內容2, 等

然後,只需查詢該表時,你想要的頁面。我不確定你爲什麼將它們分開,是否有特定的原因?

+0

是的,我不能存儲在同一個表中的信息.. **理由** 語言約束 我需要維護每個內容 不同類型的每個屏幕的版本。每種類型的SO字段都會有所不同。 我也無法序列化數據(因爲我需要搜索種類的設施) – Venu 2011-04-13 07:27:28