如何避免数据库

如何避免数据库

问题描述:

我建立一个数据库,将实体保存,如相同类型的列的重复:订单,购物车,客户等如何避免数据库

所有这些表都有一些共同的属性,如:日期,用于创建新元素的用户代理和客户端的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

我想说这两个选项是可能的,但我个人的偏好会去只是将其保存在表内。

这不是真的多余,因为您存储的信息是不同的数据,它恰好具有相同的形式并且有点类似。

一般规则是,如果表格之间的关系是一对一(在这种情况下),则应将其保存在一张表格中,而不是将其分成两份。

总结:

  • 拆分可能导致慢查询
  • 这是新的人来了解数据库
  • 从它没有真正的上攻在这种情况下,(据我可以看到)更难

PS你可以使用TimeStamp列并让数据库在创建时自动输入TimeStamp