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

Chỉ ra bản ghi chính / mặc định trong cơ sở dữ liệu

Tôi hiểu vấn đề của bạn, nhưng có thắc mắc về các phần của vấn đề, vì vậy tôi sẽ tổng quát hơn một chút.

  • Nếu có thể, tôi sẽ lưu trữ dữ liệu kho / kho dự phòng cùng với dữ liệu kho của bạn (hoặc treo trực tiếp kho hoặc nếu đó là sản phẩm cụ thể ngoài bảng kiểm kê).
  • Nếu quá trình thiết lập phải được tính toán thông qua logic kinh doanh của bạn thì các bản ghi sẽ bị treo khỏi bảng order / order_item

Về cách triển khai cấu trúc trong SQL, tôi sẽ giả định rằng tất cả các đơn đặt hàng được vận chuyển từ một kho duy nhất và việc vận chuyển phải được treo khỏi bảng đơn đặt hàng (nhưng các ý tưởng này nên có thể áp dụng ở nơi khác):

  • Cách cũ hơn để thực thi không / một kho dự phòng là treo bản ghi Warehouse_Source của bảng Đơn hàng và bao gồm trường "IsPrimary" hoặc "ShippingPosystem", sau đó bao gồm một chỉ mục duy nhất tổng hợp bao gồm OrderID và IsPrimary / ShippingPceptions.

  • nếu bạn chỉ có một kho dự phòng, bạn có thể thêm các trường ShippingSource_WareHouseID và ShippingSource_Backup_WareHouseID vào đơn đặt hàng. Mặc dù, đây không phải là con đường tôi sẽ đi.

Trong SQL 2008 trở lên, chúng tôi có sự bổ sung tuyệt vời của Chỉ mục được lọc . Điều này cho phép bạn thêm mệnh đề WHERE vào chỉ mục của mình - dẫn đến chỉ mục nhỏ gọn hơn. Nó cũng có thêm lợi ích là cho phép bạn hoàn thành một số việc mà trước đây chỉ có thể thực hiện được thông qua trình kích hoạt.

  • Bạn có thể đặt một chỉ mục được lọc duy nhất trên OrderID &IsPrimary / ShippingPinent (WHERE IsPrimary =0).

Thêm một nhận xét hoặc những điều tương tự nếu bạn muốn tôi giải thích thêm.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách tạo Ngày trong SQL Server với Ngày, Tháng và Năm dưới dạng Số nguyên

  2. Cách lấy DateTime nullable ra khỏi cơ sở dữ liệu

  3. error:26 - Lỗi Định vị Máy chủ / Phiên bản được Chỉ định. (Không thể kết nối với Db cục bộ của tôi Từ máy chủ lưu trữ của tôi)

  4. SQL Server:làm thế nào để truy vấn khi bản sao lưu nhật ký giao dịch cuối cùng đã được thực hiện?

  5. Ngăn chặn việc lưu các thay đổi yêu cầu tạo lại bảng có ảnh hưởng tiêu cực