2011-12-19 70 views
1

所以我創建一個數據庫,我有幾個問題,因爲我也不太清楚,如果它最好只將其添加到用戶表或創建新表吧。MySQL的 - 當新行添加到用戶表以及何時創建新表?

所以我的用戶表具有以下字段:

id, shop_name, address, city, state, zip_code, email_address, username, password, last_login, forgot_password 

因此,這些都是每個店鋪的基本知識。現在我需要添加3個字段:

timezone_id從另一個表拉。
primary_color這是要用作十六進制顏色代碼
secondary_color這也是一個十六進制顏色,爲主要模板的顏色。

從我的理解,如果每一個用戶都會有值填寫(所以是的,他們都將有一個時區,並有兩種顏色,它不能爲空),那麼可適當地加入到用戶表。

這是正確的嗎?或將加入一個名爲顏色更好表,有一個ID,小學,中學,USER_ID更好嗎?

哪些利弊?謝謝!

編輯:因此,舉例來說,如果我想補充一個地方「的口號」,但不是每家店鋪都將有一個口號,那會是適當的創建一個新表的口號,如果一個店方決定創建他們自己的話會把它加到桌子上?

我只想看看我是否正確理解這一點。

回答

1

我只想添加到您的用戶表。似乎沒有任何理由創建一個新的顏色表。如果每個用戶都擁有無限數量的顏色,則只能這樣做。將它放在一張表中意味着您可以通過一個簡單的查詢從一張表中獲取所有數據,而不必爲了獲取用戶的所有數據而必須進行連接或單獨進行查詢。

關於標語,再次添加到用戶表。如果他們有一個口號,它添加到外地,如果他們不留空白。如果一個用戶有多個口號,那麼也許你會在一個單獨的表格中擁有這個口號。

也許您已經熟悉了database normalisation,因爲當您不確定如何設計數據庫時,這確實有幫助。

+0

噢,現在我開始明白了。所以當需要多個值時更是如此?非常感謝你的幫助。 – Drew 2011-12-19 15:48:49

4

當親 - 你保留一些分離的實體 - 用戶和user_colors

缺點:

    每次你訪問時間
  • 用戶和它的顏色,你必須做一個加入
  • 同樣,每次插入新用戶時,您都必須插入2個表格(這應該在交易中完成)
  • 每當用戶顏色被修改時,您必須先查找user_id,然後更新顏色表,否則你可能只是你PDATE用一個簡單的用戶表where子句

我會去一個表

+0

我不同意第三個布爾值。您通常將用戶的id作爲user_color表。所以不需要額外的查找 – 2011-12-19 15:44:34

相關問題