我會做一個交叉引用表。
實施例:
表:帖子
Columns: pstkey | userid | postMessage | etc...
pstkey是爲後體的關鍵。用戶標識是創建帖子的人。 postMessage是實際的帖子條目。
表:評論
Columns: comkey | pstkey | userid | commentMessage | etc...
comkey是提出的意見的關鍵。引用到使用pstkey的帖子。 userid是發表評論的人。然後commentMessage是實際評論的文本主體。
表:xref_postComm
Columns: xrefkey | pstkey | comkey | comkey2 |
現在最有趣的部分。所有帖子都進入帖子列表。所有評論進入評論表。這些關係全部在交叉參考表中定義。
我用這種方式完成了我的所有編程。我很榮幸與一位退休的世界級數據庫工程師合作,他教會了我一些技巧。
如何使用交叉引用表:
xrefkey | pstkey | comkey | comkey2
All that you look for is the population of a given field.
xref (Auto Incremented)
pstkey (Contains the pstkey for the post)
comkey (Contains the comkey for the comment post)
comkey2 (Contains the comkey for the comment post)
(but only populate comkey2 if comkey already has a value)
and of course you populate comkey2 with the key of the comment.
SEE, no reason for a 3rd tabel!
With this method you can add as many relationships as you want.
Now or in the future!
comkey2是回覆您的回覆。該單行所包含的位置......帖子的關鍵字,評論的關鍵字以及回覆評論的回覆關鍵字。全部由外部參照的人口完成。
EXAMPLE:
PAGES.... Page table
POSTS
pstkey | pageid | user| Post
-------------------------------------
| 1 | 1 | 45 | Went to the store the....|
| 2 | 2 | 18 | Saw an apple on tv.....
COMMENTS
comkey | pstkey | user | Comment
-----------------------------------------------
| 1 | 1 | 9 | Wanted to say thanks...
| 2 | 1 | 7 | Cool I like tha.....
| 3 | 2 | 3 | Great seeing ya....
| 4 | 2 | 6 | Had a great....
| 5 | 2 | 2 | Don't sweat it man...
xref_PostCom
xrefkey | pageid | pstkey | comkey | comkey2 |
----------------------------------------------
| 1 | 1 | 1 | NULL | NULL | Post1 on Page1
| 2 | 1 | 1 | 1 | NULL | Comment1 under Post1
| 3 | 1 | 1 | 2 | NULL | Comment2 under Post1
| 4 | 2 | 2 | NULL | NULL | Post2 on Page2
| 5 | 2 | 2 | 3 | NULL | Comment3 under Post2 on Page2
| 6 | 2 | 2 | 4 | NULL | Comment4 under Post2 on Page2 (a second Comment)
| 7 | 2 | 2 | 4 | 5 | Explained below....
Comment key 5 is matched with comment key 4....under post2 on Page 2
如果你知道什麼加盟,左連接,右連接,內/外連接創建選擇的利用這些關係來獲得數據數組,你的工作變得輕鬆許多。
我相信這位工程師稱這基本上是定義關係的「數據圖」。現在的訣竅是你如何使用這些關係訪問它們。它一開始很難接近,但知道我所知道的,我拒絕以其他方式去做。
最後會發生什麼?你最終會寫出一個腳本說,好吧,去做呃,一切,然後回來。您將以1個函數調用請求第1頁。它將返回第1頁,第1頁,第1條評論,第&和& 3,並回復1個數組中的答覆。回聲輸出並完成。
更新評論 我在第一次向我展示時說了同樣的事情。事實上,數據庫程序員迫使我這樣做,真的讓我發瘋。但現在我明白了。好處很多。
優點1)可以寫入1個查詢,將其全部抽出。
2)在多個查詢的答案可以在一個結構中填充數組,在打印頁面時,循環中的循環可以顯示頁面。
3)升級使用它的軟件可以支持任何您可能想到的可能的設計更改。無懈可擊的可擴展性。
教給我的那個人是重新設計了sears和jcpenny數據庫的僱傭槍手。回到他們有9本書因爲重複記錄問題而去同一棟房子的時候。
交叉引用表避免了設計中的很多問題。
這個理論的核心是,一個列不僅可以包含數據,而且可以同時用作真或假陳述。這是自我節省空間。爲什麼要搜索20個表格? 1索引交叉引用表可以告訴你關於其他20個表的所有信息,它的內容,你需要什麼,什麼你不需要,甚至你甚至需要打開另一個表。
簡稱: 1含什麼,但INT(2/11)交叉引用,告訴你,你需要知道你曾經打開另一個表之前的一切東西,不僅包含了完美無瑕的可擴展性,但照明效果的速度。更不用說重複記錄的可能性很小。對你和我來說重複記錄可能不是問題。但是,對於西爾斯有40億美元的記錄,每本11美元,就會增加錯誤。
確切地說:評論是評論,無論他們是否對其他評論做出回覆。 – 2010-05-28 23:20:34
對不起,我太慢了。我知道了!謝謝。現在我的問題是如何縮進回覆?我需要知道某種類型的關係嗎?比如這個回覆是第一個,這個回覆是第二個縮進x2,這個回覆是第三個,所以identx3 – jpjp 2010-05-28 23:27:58
@jpjp:我會在應用程序級別執行此操作。當你構建評論樹時,你知道很多東西要縮進它們。只是一個作爲父母的一個。 – 2010-05-28 23:37:03