如何避免在数据库中重复相同类型的列

时间:2016-04-15 06:49:05

标签: mysql database

我正在构建一个可以保存实体的数据库,例如:订单,购物车,客户等。

所有这些表共享一些常见属性,例如:日期,用于创建新元素的用户代理以及客户端的IP地址。

创建一个存储这些公共属性的单独表会被视为“ok”:

log_id | log_date_added | user_agent_id | ipaddress

然后,字段log_id将添加到表格订单,购物车,客户等中。

我首先担心的是,我必须在日志表上进行JOIN操作,以获取任何订单创建,购物车创建或客户创建的日期。

我的第二个担心是,日志表变得越大,在检索需要它的任何实体的日期,用户代理,ipaddress时对性能的影响就越大。

与此同时,我觉得在所有需要这些信息的表格中添加字段date_addeduser_agent_idip_address会非常多余。

非常欢迎任何关于此事的最佳实践建议,谢谢

1 个答案:

答案 0 :(得分:0)

我说两种选择都是可能的,但我个人的偏好只是将其保存在表格中。

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

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

总结:

  • 拆分它可能会导致查询速度变慢
  • 新人理解数据库的难度
  • 在这种情况下没有真正的好处(据我所见)

P.S。您可以使用TimeStamp列并让数据库在创建

时自动输入TimeStamp