Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何管理数据库中已更改的项目及其以前的名称_Sql Server_Database Design - Fatal编程技术网

Sql server 如何管理数据库中已更改的项目及其以前的名称

Sql server 如何管理数据库中已更改的项目及其以前的名称,sql-server,database-design,Sql Server,Database Design,当您有销售订单和项目表,然后在某个时间点您必须更改项目时,如何处理这种情况。更改也将显示在包含该项目的销售订单上。但是,假设销售订单发出时,信息是正确的,但后来发生了更改。我不希望较旧的SOs更改行项目的显示内容,也不希望必须制作新项目,因为这会使我以后混淆哪个项目是正确的 我注意到,在OpenERP中,它只会保留销售订单上的零件号名称和说明,即使您在销售订单生成后更改了它。如果您正在创建新数据库,请重新构造项目表。创建一个表(例如,ItemHistory)。在上面有ItemID和ItemTyp

当您有销售订单和项目表,然后在某个时间点您必须更改项目时,如何处理这种情况。更改也将显示在包含该项目的销售订单上。但是,假设销售订单发出时,信息是正确的,但后来发生了更改。我不希望较旧的SOs更改行项目的显示内容,也不希望必须制作新项目,因为这会使我以后混淆哪个项目是正确的


我注意到,在OpenERP中,它只会保留销售订单上的零件号名称和说明,即使您在销售订单生成后更改了它。

如果您正在创建新数据库,请重新构造项目表。创建一个表(例如,
ItemHistory
)。在上面有
ItemID
ItemTypeID
DateCreated
字段


ItemID应该用于订单,并且
ItemTypeID
+
DateCreated
将帮助您获取当前项目。

这是否意味着在创建订单时我必须创建两个项目表并将一个项目复制到另一个项目?@DennisZaitsev不,您不需要创建两个项目表
ItemTable
将具有
ItemDetails
ItemStatus
(活动或不活动)、ItemType(来自
ItemTypeTable
的外键)。在
ItemTypeTable
中,您将存储ItemType(例如Iphone4、Iphone4s、诺基亚Luma等)。每次更新项目详细信息时。在“ItemTable”中创建状态为active的新记录,并将旧记录状态更新为inactive。加入
ItemTypeTable
将帮助您快速获得结果。它将允许您访问项目的旧详细信息以及最近的详细信息。