소프트 삭제를 피하기 위해 휴지통 데이터베이스를 만들고 있습니다. 기본 데이터베이스는이 데이터베이스에 연결됩니다. 여기에 가능한 두 가지 접합 접근법의 예가 있습니다. 어떤 입력이 더 효율적인지 기대하고 있었습니까?어떤 DB 접합 접근법이이 시나리오에서 더 효율적입니까?
간단히 말하면 Order
과 Invoice
의 두 테이블이 있고 각 인보이스에는 1 개의 주문 만 있습니다. 휴지통에 이러한 테이블의 접합을 위해
Order
-----
OrderId
InvoiceId
Description
Date
NumberOfStuffOrdered
Invoice
-------
InvoiceId
Description
Price
Tax
Shipping
, 내가 걸릴 접근하는 확신 할 수 없었다.
접근 1 :
DeletedOrder
------------
DeletedOrderId
OrderId
RecycleBinId
Date
Reason
DeletedInvoice
--------------
DeletedInvoiceId
InvoiceId
RecycleBinId
Date
Reason
접근법 2 :
DeletedRecords
--------------
DeletedRecordsId
RecordPrimaryKeyId
RecycleBinId
RecordType
Date
Reason
데이터베이스에 더 테이블 공간을 소요됩니다 접근 한, 그것은 테이블 당 더 적은 행이와 빠른 쿼리 시간이되지만 시스템이 성숙합니다. 접근법 2는 데이터베이스의 각 테이블에 대해 추가로 삭제 된 테이블을 만들어야하지만 시스템이 성숙 해지고 쿼리 속도가 느려지면서 통합됩니다.
전반적으로 어느 쪽이 더 효율적일 것입니까, 아니면 더 좋은 방법이 있습니까?
답변 해 주셔서 감사합니다. 좋은 성능은 항상 중요합니다! ;) 주로 레코드를 제거해야 할 때 외래 키 관계를 제거하거나 삭제를 삭제하지 않고도 참조 무결성이 유지되도록 데이터를 유지하려고합니다. 또한 성능에 영향을주지 않고 제거 된 레코드를 복원 할 수있는 기능을 용이하게합니다. 휴지통에는 계단식 삭제 기능이 있습니다. –