Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Wskazanie podstawowego/domyślnego rekordu w bazie danych

Rozumiem Twój problem, ale mam pytania dotyczące jego części, więc będę nieco bardziej ogólny.

  • Jeśli to w ogóle możliwe, chciałbym przechowywać dane magazynu/magazynu zapasowego wraz z danymi magazynowymi (albo bezpośrednio zawieszone magazyny, albo jeśli są one specyficzne dla produktu poza tabelami magazynowymi).
  • Jeśli konfiguracja musi być obliczona za pomocą logiki biznesowej, rekordy powinny zwisać z tabeli order/order_item

Jeśli chodzi o implementację struktury w SQL, przyjmę, że wszystkie zamówienia są wysyłane z jednego magazynu i że wysyłka musi być zawieszona poza tabelą zamówień (ale pomysły powinny mieć zastosowanie gdzie indziej):

  • Starszym sposobem wymuszenia magazynów kopii zapasowych zero/jeden byłoby zawieszenie rekordu Warehouse_Source tabeli Orders i dołączenie pola „IsPrimary” lub „ShippingPriority”, a następnie dołączenie unikalnego indeksu złożonego zawierającego identyfikator zamówienia i IsPrimary/ShippingPriority.

  • jeśli będziesz mieć tylko jeden magazyn zapasowy, możesz dodać do zamówienia pola ShippingSource_WareHouseID i ShippingSource_Backup_WareHouseID. Chociaż to nie jest trasa, którą bym wybrała.

W SQL 2008 i nowszych mamy wspaniały dodatek Przefiltrowane indeksy . Pozwalają one na dodanie klauzuli WHERE do indeksu, co daje bardziej zwarty indeks. Dodatkową zaletą jest to, że pozwala osiągnąć pewne rzeczy, które w przeszłości można było wykonać tylko za pomocą wyzwalaczy.

  • Możesz umieścić unikalny filtrowany indeks na OrderID i IsPrimary/ShippingPriority (GDZIE IsPrimary =0).

Dodaj komentarz lub coś takiego, jeśli chcesz, żebym wyjaśnił dalej.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sprawdź, czy ciąg zawiera podciąg w SQL Server 2005, korzystając z procedury składowanej

  2. Jaka jest różnica między char, nchar, varchar i nvarchar w programie SQL Server?

  3. Znajdź zależność kolumny

  4. zwraca wartość na pozycji z STRING_SPLIT w SQL Server 2016

  5. Jak przepisać IS DISTINCT FROM i IS NOT DISTINCT FROM?