Mysql
InnoDB 的規範化和分解表
我正在設計一個 Web 應用程序,它很小但處理大量讀取和插入。假設 60% 讀取和 40% 寫入。我的儲存引擎是 MySQL 上的 InnoDB。我有一個名為 User 的表,裡面有很多東西。我將其分解為較小的表,例如地址表和生物表。這是一個例子:
原表
User table ---------- user_id PK user_email user_pass user_dob user_gender user_country user_state user_city
拆開之後
User table ---------- user_id PK user_email user_pass Bio Table ---------- user_dob user_gender Address Table ------------- user_country user_state user_city
那麼你們認為,擁有較小的表,但其中幾個更適合高流量數據庫,還是我應該將它們全部放在一張表中?
我是這樣看的,還是分開比較好,就是關係型數據庫
如果 N 個使用者可以有 1 個地址,那麼設計應該是:
如果 N 個使用者可以有 M 個地址(地址更多的使用者,以及多個使用者的地址),應該是:
對於這兩種設計,表 USER,列 ID 是該表的主鍵,而 User_id 只是一個 FK。在第二個設計中,表地址,列 ID,它是另一個 PK,它與使用者建立關係 N:M,並使用 2 個外鍵(使用者 PK 和地址 PK)創建“user_has_table”。