Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.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
Database design 在这种情况下,哪种DB连接方法更有效?_Database Design_Archiving - Fatal编程技术网

Database design 在这种情况下,哪种DB连接方法更有效?

Database design 在这种情况下,哪种DB连接方法更有效?,database-design,archiving,Database Design,Archiving,为了避免软删除,我正在创建一个回收站数据库。主数据库将连接到它。这是两种可能的连接方法的一个例子,我希望能得到一些更有效的输入 为简单起见,假设有两个表,Order和Invoice(每个发票只有一个订单) 为了将这些表格连接到回收站,我不确定该采取哪种方法 方法1: DeletedOrder ------------ DeletedOrderId OrderId RecycleBinId Date Reason DeletedInvoice -------------- DeletedInvo

为了避免软删除,我正在创建一个回收站数据库。主数据库将连接到它。这是两种可能的连接方法的一个例子,我希望能得到一些更有效的输入

为简单起见,假设有两个表,
Order
Invoice
(每个发票只有一个订单)

为了将这些表格连接到回收站,我不确定该采取哪种方法

方法1:

DeletedOrder
------------
DeletedOrderId
OrderId
RecycleBinId
Date
Reason

DeletedInvoice
--------------
DeletedInvoiceId
InvoiceId
RecycleBinId
Date
Reason
方法2:

DeletedRecords
--------------
DeletedRecordsId
RecordPrimaryKeyId
RecycleBinId
RecordType
Date
Reason
虽然方法1将占用数据库中更多的表空间,但随着系统的成熟,它将减少每个表的行数,并且具有更快的查询时间。方法2整合了必须为数据库中的每个表创建一个额外的已删除表的情况,但随着系统的成熟,其大小将增加,查询速度将变慢


总的来说,哪种方法更有效,或者有更好的方法来实现这一点?

这取决于你需要保留多少,以及你将如何使用它。如果您需要记录发票和订单的所有详细信息(NumberOfStuffOrdered、Tax等),则需要特定的删除表。如果您只需要记录该行曾经存在的事实(您现在拥有的:Id、type、Date[Deleted]、Reason),我们将返回到“视情况而定”

如果没有人真的会使用这些数据,如果你只需要它存在于某一天美国国税局审计的机会之外,那么一张表就足够了。(类似于70年前的仓库里堆满了表单——这需要时间,但最终你会找到它。)然而,如果你要定期访问这些数据并运行报告、进行数据挖掘或其他任何操作,那么你最好设计表来支持这些过程——标准化的星型模式,或者任何有用的东西


一般来说,我认为一个带有几个索引的大表可以支持频繁的查询,除非良好的性能至关重要。

感谢您的回复。良好的性能始终至关重要!;)我主要希望保留数据,以确保保持引用完整性,而不必在需要删除记录时删除外键关系或级联删除。这还将有助于在不影响性能的情况下恢复删除的记录。回收站将有一个级联删除功能,以节省使用。
DeletedRecords
--------------
DeletedRecordsId
RecordPrimaryKeyId
RecycleBinId
RecordType
Date
Reason