我正在尋找一種解決方案,以最有效的方式爲社交網站設計一個表格(使用mySQL)。這裏是我當前表設置了:(高達約萬成員與9999級的消息給各有關成員即100個軍用行)
社交網站的數據庫設計。幫幫我!
User_ID Peer_ID Message 001 002 msg from 001 to 002 001 003 msg from 001 to 003 001 004 msg from 001 to 004 001 005 msg from 001 to 005 002 001 msg from 002 to 001 002 003 msg from 002 to 003 002 004 msg from 002 to 004 002 005 msg from 002 to 005 003 001 msg from 003 to 001 003 002 msg from 003 to 002 003 004 msg from 003 to 003 003 005 msg from 003 to 005 and so on...
我知道,第一個由於User_ID列具有重複值,所以規範化規則被破壞。
我寧願爲User_ID設置一個唯一的鍵索引列,並在新用戶註冊時使用Auto_Increment,從而生成矩陣格式。即。標題行中的列& Peer_ID中的User_ID。
但是在這種情況下,需要多達10000個列(對於每個Peer_ID)並且沒有辦法在新用戶註冊時自動生成新列。請看下圖:
User_ID 001 002 003 004 005 001 NA msg:001 to 002 msg:001 to 003 msg:001 to 004 msg:001 to 005 002 msg:002 to 001 NA msg:002 to 003 msg:002 to 004 msg:002 to 005 003 msg:003 to 001 msg:003 to 002 NA msg:003 to 004 msg:003 to 005 004 msg:004 to 001 msg:004 to 002 msg:004 to 003 NA msg:004 to 005 005 msg:005 to 001 msg:005 to 002 msg:005 to 003 msg:005 to 004 NA and so on...
我如何能創建一個更有效的表設計任何想法?
在此先感謝...
不,你是對的第一次。只要user_id列和peer_id列是外鍵到某些「用戶」表中,那麼你已經明白了,沒有*值*重複,只有*引用*重複。 – SingleNegationElimination