我正在做一個數據庫的設計,最終會有成千上萬的用戶。每個用戶都有您的個人資料和特定數據關聯。數據庫建模-mysql
在您看來,最好的做法是爲id,用戶名,activationLink和hash以及地址,年齡,照片,工作提供另一張桌子,或者最好是所有東西的唯一表格?
感謝您的時間
我正在做一個數據庫的設計,最終會有成千上萬的用戶。每個用戶都有您的個人資料和特定數據關聯。數據庫建模-mysql
在您看來,最好的做法是爲id,用戶名,activationLink和hash以及地址,年齡,照片,工作提供另一張桌子,或者最好是所有東西的唯一表格?
感謝您的時間
如果:
那麼時間把它們放在一張桌子裏,其他人將它們分開。
在您的模型中,activationLink
似乎每次激活只查詢一次,所以我會將它移動到一個單獨的表中(這將允許在帳戶被激活後刪除它)。
地址,年齡,照片和工作通常會與用戶名一起顯示,因此最好將它們合併到一張表中。
不要讓您的初始設計限制未來擴展需求的能力(或使其很難)。
address
所以你可能把它放在users
表 - 如果你希望他們能夠存儲的「工作」,並在未來的「家」的地址,或歷史過去的地址?users.photo
中放置了該照片(或其URL),則必須更改數據結構以允許用戶擁有個人資料的歷史記錄照片正如Quassnoi提到的那樣,這些決策都會對性能產生影響 - 更多的表格意味着更多的複雜性,以及更多的潛在緩慢查詢。不要爲此創建新表,但應仔細考慮數據模型,因爲它很快就會變得很難改變。
任何與user
實體嚴格一對一的關係,並且不可能永遠不會改變,並且需要(出生日期是一個很好的例子)歷史的值應該與核心定義一起放在表中。任何潛在的一對多關係(即使它們不是現在爲)都適合他們自己的表格。
謝謝,很好的解釋 - – 2011-04-26 14:28:41
在我的模型中,我總是檢查登錄帳戶是否激活。 – 2011-04-26 14:15:02
@Wire:當然,但是你真的需要在激活鏈接被使用後永久存儲嗎?我會創建一個1字節的'isActive BOOL',並在激活執行後放棄鏈接。 – Quassnoi 2011-04-26 14:16:07
我有一個布爾值用於激活或不激活。鏈接後一兩天,可以刪除,是:) – 2011-04-26 14:18:00