【发布时间】:2011-01-03 01:36:00
【问题描述】:
我正在尝试找出在我的数据库表中调用该列的内容,该列将 INT 保存到特定的“记录版本”。我目前正在使用“RecordOrder”,但我不喜欢这样,因为人们认为higher=newer,但我使用它的方式,lower=newer(其中“1”是当前记录,“2”是第二个最新的,“3”是更旧的,依此类推)。我考虑过“RecordVersion”,但恐怕会有同样的问题。还有其他建议吗? “RecordAge”?
我这样做是因为当我插入表格时,不必找出下一个版本,然后冒着在我写之前被盗那个号码的风险,我只需插入带有“RecordOrder”的插入" of 0. 表上的触发器 AFTER INSERT 将该键的所有“RecordOrder”数字加 1,因此我刚刚插入的记录变为“1”,所有其他记录都加 1。这样,您可以通过选择 RecordOrder=1 来获取一个人的当前记录,而不是获取 MAX(RecordOrder) 然后选择它。
PS -我也愿意批评为什么这是一个糟糕的想法,我应该增加这个索引。这似乎使查找更容易,但如果这是一个坏主意,请赐教!
关于数据的一些细节,例如:
我有以下数据库表:
CREATE TABLE AmountDue (
CustomerNumber INT,
AmountDue DECIMAL(14,2),
RecordOrder SMALLINT,
RecordCreated DATETIME
)
我的数据子集如下所示:
CustomerNumber Amountdue RecordOrder RecordCreated
100 0 1 2009-12-19 05:10:10.123
100 10.05 2 2009-12-15 06:12:10.123
100 100.00 3 2009-12-14 14:19:10.123
101 5.00 1 2009-11-14 05:16:10.123
在此示例中,客户 100 有三行 - 他们欠了 100 美元,然后是 10.05 美元,现在他们什么都不欠了。如果我需要进一步澄清,请告诉我。
更新:
“RecordOrder”和“RecordCreated”列对用户不可用 - 它们仅供内部使用,并帮助确定哪些是当前客户记录。此外,我可以使用它返回一个适当排序的客户历史记录,尽管我可以很容易地使用日期来完成。我想,我可以只用 RecordCreated 日期完成与递增“记录版本”相同的事情,但这消除了知道 RecordOrder=1 是当前记录的便利,我又回到做一个子查询DateTime 上的 MAX 或 MIN 以确定最近的记录。
【问题讨论】:
-
+1 比我的 DBA 更关心。
标签: database-design data-warehouse columnname