2016-04-15 106 views
0

我建立一個數據庫,將實體保存,如相同類型的列的重複:訂單,購物車,客戶等如何避免數據庫

所有這些表都有一些共同的屬性,如:日期,用於創建新元素的用戶代理和客戶端的IP地址。

難道被認爲是「確定」創建一個單獨的表,將存儲這些共同的屬性:

log_id | log_date_added | user_agent_id | ipaddress 

然後領域log_id將在桌的訂單,推車,客戶等

加入

我的第一個擔心是,我將不得不在日誌表上進行JOIN操作以獲取任何訂單創建,購物車創建或客戶創建的日期。

我的第二個擔心是,日誌表越大,當檢索日期,用戶代理,ipaddress爲任何需要它的實體時,會影響性能。

與此同時,我覺得在所有需要這些信息的表中添加字段date_addeduser_agent_id,ip_address是非常多餘的。

關於該事項的任何最佳實踐recomendation是更受歡迎,謝謝

+0

你的問題可能更適合http://dba.stackexchange.com/ – Jester

+0

請問你爲什麼要存儲'user_agent_id'和'ip_adress ' 您是否在嘗試記錄用戶的操作?如果是這樣的話'ip_adress'不是很有用,因爲許多用戶將有一個IP地址會有所不同(許多提供商不提供靜態IP地址給他們的用戶) – Jester

回答

0

我想說這兩個選項是可能的,但我個人的偏好會去只是將其保存在表內。

這不是真的多餘,因爲您存儲的信息是不同的數據,它恰好具有相同的形式並且有點類似。

一般規則是,如果表格之間的關係是一對一(在這種情況下),則應將其保存在一張表格中,而不是將其分成兩份。

總結:

  • 拆分可能導致慢查詢
  • 這是新的人來了解數據庫
  • 從它沒有真正的上攻在這種情況下,(據我可以看到)更難

PS你可以使用TimeStamp列並讓數據庫在創建時自動輸入TimeStamp