创建数据库时 - 建议为数据创建列,我可以根据其他字段进行计算吗?

时间:2016-02-18 18:10:29

标签: database field

我正在为律师建立申请,他可以在其中创建客户组合。在此投资组合中,有投资组合的ID,创建日期,客户姓名,电话等。

除了所有这些领域外,还有另一个领域:“投资组合名称”。此字段包含有关格式化文本中其他字段的客户端的一些信息。

因此,例如,如果:

  1. ID = 271
  2. client_name =“ John Doe
  3. creation_date = 18/02/2016
  4. portfolio_name 将是 271 / John Doe / 18022016

    现在,由于 portifolio_name 实际上并不包含新数据,而只包含来自其他字段的格式化数据,它是否真的存在于数据库表中作为列?那是数据复制吗?

3 个答案:

答案 0 :(得分:1)

这取决于表的大小以及查询表的方式。

如果表格很大,您可以为计算字段创建一列。这样查询就很容易了。

如果表格很小,您可以在查询中计算

答案 1 :(得分:1)

大多数数据库引擎允许您为此目的创建计算列。根据引擎以及如何设置计算列,它可能会保存到磁盘,也可能不会保存到磁盘,但保证始终保持最新状态。好消息是你可以像对待它一样对待它。

https://technet.microsoft.com/en-us/library/ms191250%28v=sql.105%29.aspx

答案 2 :(得分:1)

这是违反1NF的教科书,通常应该避免。在某些情况下它是可以接受的 - 例如,计算值非常困难或非常耗时。但是,由于字符串连接非常简单(您甚至可以在查询中正确执行,没有任何伪字段的定义)我不建议这样做,除非字段只包含初始默认值和客户端有能力以后定制它。否则,最终变得不一致。例如,当客户名称发生变化时会发生什么?