处理版本号-版本控制

sMa*_*Mah -1 sql sql-server versioning delphi

我正在研究程序与一些记录的数据文件之间的接口。我的程序将加载数据文件并将其存储到数据库中。在记录的数据文件中,其格式结构包含其他程序(生成该文件)的不同版本号

处理版本号的最佳方法是什么?

Major_Minor_Build_Revision

12.03.04.142

我将在程序中使用它稍后加载指定版本(例如2.03.04.142)的所有数据

程式设计

在Delphi中,我们可以创建一条记录并处理版本号:

TVersion = Record
   Major : integer;
   Minor : integer;
   Build : integer;
   Revision : integer;
end;
Run Code Online (Sandbox Code Playgroud)

还是将其转换为Integer并将其存储会更好?如果是进行转换的最佳方法是什么?

数据库

在SQL数据库中,同样的事情,我们可以为[Major],[Minor],[Build],[Revision]创建每列作为整数来存储。

或者,如果使用版本转换,则只能在SQL [Version]中使用一列。

哪一种是最佳使用方式?还是有更好的方法来处理它?

提前致谢。

Gor*_*off 5

SQL Server具有糟糕的内置字符串解析支持。因此,我不鼓励您将版本存储为句点分隔的字符串。如果这样做,您可能会PARSENAME()广泛使用该功能。然后,有一天,如果您对该版本具有第五或第六个元素,则将不再起作用。

因此,这里有一些替代方法:

  • 创建版本参考表。这将具有与Delphi版本控制相同的结构,外加其他字段,以显示输出内容和标识主键。其他表中的版本将引用该表中的值。

  • 将版本的四个部分中的每个部分存储在其自己的列中,并使用用户定义的函数或计算列来操纵版本。

  • 为版本创建您自己的用户定义类型。

我倾向于选择前两个选项之一。