我正在为律师建立申请,他可以在其中创建客户组合。在此投资组合中,有投资组合的ID,创建日期,客户姓名,电话等。
除了所有这些领域外,还有另一个领域:“投资组合名称”。此字段包含有关格式化文本中其他字段的客户端的一些信息。
因此,例如,如果:
portfolio_name 将是 271 / John Doe / 18022016 。
现在,由于 portifolio_name 实际上并不包含新数据,而只包含来自其他字段的格式化数据,它是否真的存在于数据库表中作为列?那是数据复制吗?
答案 0 :(得分:1)
这取决于表的大小以及查询表的方式。
如果表格很大,您可以为计算字段创建一列。这样查询就很容易了。
如果表格很小,您可以在查询中计算
答案 1 :(得分:1)
大多数数据库引擎允许您为此目的创建计算列。根据引擎以及如何设置计算列,它可能会保存到磁盘,也可能不会保存到磁盘,但保证始终保持最新状态。好消息是你可以像对待它一样对待它。
https://technet.microsoft.com/en-us/library/ms191250%28v=sql.105%29.aspx
答案 2 :(得分:1)
这是违反1NF的教科书,通常应该避免。在某些情况下它是可以接受的 - 例如,计算值非常困难或非常耗时。但是,由于字符串连接非常简单(您甚至可以在查询中正确执行,没有任何伪字段的定义)我不建议这样做,除非字段只包含初始默认值和客户端有能力以后定制它。否则,将最终变得不一致。例如,当客户名称发生变化时会发生什么?