![]() |
1
4
我认为“当前版本=1”是个坏主意,因为添加新的当前记录时,必须更新所有以前的版本。其他任何引用旧版本号的表或应用程序现在都将是错误的。我要写一个与这样的大型机程序接口的服务,这是一个巨大的头痛,浪费了几十个开发人员的时间。
我通常使用
编辑:
我没有看到IAndisme刚刚指出的数据仓库标签。如果选择所有的版本都不起作用,我看到一些系统会保留一个单独的表,只在另一个表中存储每个记录的最新版本。所以当一个新版本被添加到
|
![]() |
2
2
我认为您应该使用时间戳字段和当前时间的默认值,而不是使用整数来说明行的最新版本。 这样,无论是谁在何时添加行,都不会对行的最新版本产生歧义。 我认为将所有关联行重新编号为ID+1不是一个好主意,原因有很多:
|
![]() |
3
1
您为什么不能使用记录创建日期来完成本质上相同的事情呢? 做一些类似的事情:
会给你最新的记录,你不必担心记录的修改。 使用记录重新编号方法(索引争用、锁升级等)可能会导致各种各样的问题。 锁升级: http://msdn.microsoft.com/en-us/library/aa213033(SQL.80).aspx 索引争用: http://blogs.digineer.com/blogs/jasons/archive/2009/02/25/monitoring-index-contention-with-dmfs.aspx 正如其他人在数据仓库方面提到的,您可以始终在数据集的顶部放置一个视图或快照或类似的东西,以按照您希望的格式(仅限最新记录等)提供数据。显然,我不太熟悉您的约束或需求,不知道视图/快照等在您的情况下是否有意义。 |
![]() |
4
1
我喜欢Raj More使用时间戳的想法。
但我认识到,任何搜索最新记录的查询都将很困难,并将导致大量处理。
|
![]() |
5
0
好的,我看到的问题是,你将浪费大量的数据库处理时间重新编号。另外,我不知道您是否要向用户公开记录顺序,但如果是这样,他们将希望能够使用该数字询问有关它的问题,并让它不断地更改将是令人困惑和烦人的。当然,您已经指出的问题是,订单可能不是未来开发人员所期望的。 为什么不直接使用一个标识字段,然后编号将是自动的(那么在插入之前窃取一个数字将是一个问题)。如果对每个客户重复编号是否真的很重要,只要您可以按ID DESC和客户编号订购,以查看一个人的所有记录?或者您可以使用记录日期字段来订购记录。 |
![]() |
6
0
你所说的是一个时代而不是一个版本,所以你可以称之为记录。但我会把它全部处理掉,因为你似乎只想为一个特定的客户获得最近的订单。 这可以通过使用客户编号和日期/时间字段来实现。如果将这两个约束组合为唯一约束,并在客户端代码中 稀有的 如果你有比赛条件,你应该没有问题。 在插入一个记录时触发一个触发器来修改大量记录的想法是个坏主意,因为随着记录的添加,它变得越来越昂贵。 仔细研究任何引入任意列(如版本号)的设计。它实际上是一个派生属性(取决于其他属性,在本例中是客户编号和日期),尽管出于性能原因可以这样做,但应该只在理解结果的情况下减轻特定的问题。 我看不到使用一个小整数来抵消触发器本身的成本所带来的性能改进,但是,和所有数据库决策一样, 测量,不要猜测 . |
![]() |
RRG · 雪花数据仓库模式中的多个公共表? 7 年前 |
![]() |
Rachel · 如何使用维度中的代理项键填充事实表 7 年前 |
![]() |
WhatsUp · 数据仓库设计-多个查找值 7 年前 |
![]() |
user2263025 · Azure SQL数据仓库计算列错误 7 年前 |
![]() |
boethius · 在包含连接的表上执行增量Sqoop? 7 年前 |
![]() |
Ahmad Qasim · 如何使用talend获得这样的输出 7 年前 |
![]() |
dead mah · 有人能帮我解决这个错误吗 7 年前 |