我正在創建一個網站,其中每個註冊用戶可以存儲聯繫人列表。我想到,不是將聯繫人存儲在帶有user_id,contact_name,contact_email的表格中,最好將其標準化以防止多次存儲相同的名稱/電子郵件。因此,我現在有4個表格:用戶,姓名,電子郵件和聯繫人,其中聯繫人包含user_id,name_id和email_id。我正朝着正確的方向前進,還是我不必要地使事情複雜化?如何構建一個mysql數據庫,其中每個用戶有多個聯繫人
感謝所有對我現在所能看到的有幫助的迴應是一個非常模糊的問題。解釋我的推理可能是個好主意。 在一個示例場景中,如果有100個用戶,其中大多數用戶已通過其他用戶的推薦加入,則每個用戶聯繫人列表將共享大量的常用電子郵件地址。然而,[email protected]可能被不同的用戶稱爲John,J Smith,Johnny boy等。如果我正確理解了規範化的原則(不太可能),將用戶,聯繫人姓名和電子郵件地址分隔到不同的表中,可以顯着減少重複條目並提高數據庫的效率。在下面的示例中,「聯繫人」表可以多次包含相同的電子郵件地址。 因此,簡而言之,在一張表或幾張小表中沒有重複條目的情況下,是否有更多的條目比必要條件更好?
它可以工作,但除非特別要求,它是有點未來的證明。 [今天的XKCD](http://xkcd.com/974/)在這裏非常合適。 – Konerak
如果每個名稱都必須與電子郵件相對應,則可能需要將名稱表與電子郵件表合併。 – apokryfos