Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Tôi có nên xóa hoặc vô hiệu hóa một hàng trong cơ sở dữ liệu quan hệ không?

Không xóa sẽ tạo ra một lớp lỗi mới cho tất cả các truy vấn trong tương lai. Đừng quên rằng việc viết truy vấn thường được thực hiện bởi những người dùng thành thạo (tức là những người không phải là chuyên gia CNTT) và các nhà phát triển cơ sở. Vì vậy, bây giờ mọi bảng có dữ liệu không hợp lệ chỉ được đánh dấu bằng cờ hoạt động BIT sẽ cần thêm một VÀ trong mệnh đề WHERE cho mọi truy vấn từ bây giờ cho đến mãi mãi. Điều này sẽ giúp người dùng rơi vào hố của thất bại thay vì hố của thành công. Tuy nhiên, tôi thực sự khuyến khích bạn triển khai các hệ thống cờ này bởi vì nếu không có thiết kế xấu, nhà phát triển không cần bảo trì để sửa nhiều lỗi mà nó sẽ tạo ra.

Có giá trị như thế nào khi có dữ liệu lịch sử trong bảng? Nếu doanh nghiệp nếu nhìn về phía trước, việc có dữ liệu cũ trong các bảng có thể chỉ là một gánh nặng - nó gây ra vấn đề khi tạo các ràng buộc (tất cả các ràng buộc sẽ phải được sửa đổi để loại trừ dữ liệu bạn muốn không có ở đó). Việc đảm bảo chất lượng dữ liệu rất phức tạp khi phải liên tục xác định lại nội dung nào là "đồ cũ mà chúng tôi sợ xóa nhưng không bao giờ muốn sử dụng hoặc cập nhật lại" và nội dung mới mà chúng tôi quan tâm.

Có phải nó đang bị xóa bởi vì nó là một sự nhầm lẫn? Nếu hàng tương ứng với một thực thể trong cuộc sống thực, có thể thú vị khi giữ và đặt cờ "bốc hơi", "chết", "rời khỏi tòa nhà". Nếu bạn vô tình chèn một hàng tương ứng với không có thực thể nào trong đời thực, thì việc XÓA không phải là một điều xấu. Những khách hàng tưởng tượng chưa từng tồn tại có quan trọng để giữ chân trong bảng khách hàng không?

Và cuối cùng, tính cách đóng một vai trò lớn. Mọi người cũng có thể là người đóng gói với dữ liệu. Nếu một DBA giữ tất cả các tờ báo của anh ta từ 30 năm trước và không thích xóa dữ liệu, có lẽ anh ta nên đảm bảo rằng anh ta đưa ra quyết định thiết kế dữ liệu dựa trên thành tích chứ không phải sở thích cá nhân không liên quan.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. làm thế nào để sửa đổi một ràng buộc kiểm tra hiện có?

  2. WHERE_IN truy vấn với một khóa tổng hợp?

  3. Oracle:Làm cách nào để thêm phút vào dấu thời gian?

  4. Hàm REMAINDER () trong Oracle

  5. Lược đồ kỹ sư đảo ngược (oracle) thành ERD