2012-11-17 193 views
0

我正在構建這個遊戲門戶,我有一些數據庫問題。目前我有大約10張桌子,但我認爲他們會在完成編程後超過20桌。無論如何,我想創建不同表格之間的某種關係(有點像WordPress)。該表將持有任何關係,從表A中的一行有一行的表B.什麼我想出瞭如下:數據庫結構和關係

表關係

| rs_id | rs_type | rs_alpha | rs_beta | 

rs_id - >只是一個ID
rs_type - >的類型關係
rs_alpha - >相關表#1和行ID
rs_beta - >相關表#2和行ID

例子:

| 1 | cover | games:153 | images:318 | 
| 2 | tag | news:183 | tags:18 | 
| 3 | group_admin | users:918 | group:75 | 
... 

這可能只是做到這一點,但這裏是我的擔憂: 1.這張表的增長速度非常快,很快就會有超過100,000行,這會減慢加載時間。 2.要提取信息,我將不得不爆炸每個可能會減慢加載時間的調用。 3.我可能會從ID(rs_alpha,rs_beta)中劃分表名,但這也可能會延長加載時間。

謝謝你,我接受任何其他的解決方案,可能會比這一個:)

更好,如果你有時間,你可以從這裏下載我的數據庫結構,看看是什麼樣子: demirevdesign。 COM /公/ pcanvil.sql.gz

(該addon_表將成爲關係表)

回答

0

據我瞭解,關係類型本身定義涉及表,因此在存儲表名沒有必要。
此外,如果您重構您的模式併爲可能涉及關係的所有實體添加通用父表,則根本不需要關心表名,您只需存儲該新表的ID。

最後,關係總是有開始日期,並可能有結束日期,我建議將此屬性添加到relationships表。

至於性能,如果沒有看到如何查詢表格,很難回答。我想在關係類型列的一般分區將是有益的

+0

我還沒有想到rs_type可能會攜帶表信息。謝謝! 至於日期,我認爲這並不重要。關係表只是爲了顯示一行是否連接到另一行。不過我不知道我在這裏做什麼是最好的解決方案。如果你有時間,請下載我的數據庫(我在我的問題中添加了鏈接)並對其進行瀏覽,我非常感謝你的幫助。 –

+0

@СърГеоргиДемирев:我看着你的轉儲,但它有15個左右的表格,分析它們/給出有用的建議聽起來像至少幾個小時的工作,而不是幾分鐘內可以回答的問題......我建議閱讀http://www.embarcadero.com/images/dm/technical-papers/data-model-resource-sample-collection.pdf,它有描述存儲實體之間關係的模式的章節。 – a1ex07

+0

我會研究它,謝謝! –