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

utwórz klucz obcy bez klucza podstawowego

Bardzo dobre pytanie. Nie ma fundamentalnego powodu, dla którego ograniczenie referencyjne nie powinno odwoływać się do czegoś innego niż klucz kandydujący. Istnieje nawet nazwa takich ograniczeń:Zależności włączenia. Klucz obcy to po prostu rodzaj zależności włączenia, w której celem ograniczenia jest klucz kandydujący.

Niestety SQL nie zapewnia dobrego wsparcia dla zależności inkluzyjnych, a nawet ogólnie dla ograniczeń referencyjnych. SQL ogranicza swoje tak zwane ograniczenia FOREIGN KEY do odwoływania się do kolumn ograniczenia UNIQUE lub PRIMARY KEY (choć niekoniecznie jest to klucz kandydujący).

Więc to, z czym się spotkałeś, jest naprawdę wątpliwym ograniczeniem SQL. Nie oznacza to, że robisz coś bardzo złego.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dlaczego zapytanie parametryczne generuje znacznie wolniejszy plan zapytań w porównaniu z zapytaniem niesparametryzowanym?

  2. Narzędzia do zarządzania SQL Server 2017

  3. Jaka jest różnica między tymi dwoma zapytaniami, jeśli chodzi o uzyskiwanie dwóch różnych zestawów wyników?

  4. SQL Server 2008 GEOGRAFIA Wartość STDistance()

  5. Problem z kluczem obcym z wieloma bazami danych w jednej transakcji