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

EF4.1:Czy można mieć relację zero lub jeden do zera lub jeden (0..1 do 0..1)?

Nie, nie jest to możliwe i wątpię, czy działa na serwerze SQL. Relacja bazy danych wymaga, aby jeden koniec stał się zależny. Oznacza to, że odwołuje się do klucza głównego (PK) głównego końca - nazywamy ten klucz obcy (FK). Jeśli mówimy o relacji jeden-do-jednego, FK musi być oznaczony jako unikalny, aby tylko jeden rekord w tabeli zależnej mógł odwoływać się do danego rekordu z tabeli głównej. Jedyną prawidłową relacją w tym przypadku jest 0..1 - 1, gdzie zleceniodawca może istnieć bez zależności, ale zależny może istnieć tylko wtedy, gdy jest powiązany z istniejącym zleceniodawcą, ponieważ jego wartość FK musi być ustawiona na wartość PK zleceniodawcy. Teoretycznie FK może być nullable, ale zależy to od sposobu, w jaki baza danych implementuje unikalne ograniczenia. Jeśli baza danych liczy null jako inną unikalną wartość, tylko jeden zależny rekord może mieć FK ustawione na null (myślę, że jest to przypadek serwera SQL).

W EF jest to jeszcze bardziej skomplikowane, ponieważ EF nie obsługuje unikalnych ograniczeń iz tego powodu można budować relację jeden do jednego tylko wtedy, gdy FK w jednostce zależnej jest również jej PK (=nie ma możliwości ustawienia jej na null). Jeśli nie możesz ustawić FK na null, nie możesz mieć wartości null, a ponieważ ta jednostka główna musi istnieć, w przeciwnym razie integralność referencyjna spowoduje błąd.

Najlepszym rozwiązaniem dla Ciebie jest rozważenie Request jako jednostka główna i Result jako zależne. Żądanie musi zostać utworzone jako pierwsze i musi być przechowywane w bazie danych tak długo, jak Result . Result musi mieć taką samą wartość PK (kolumna nie może być automatycznie zwiększana) jak odpowiednie Request (a PK musi być FK dla Request ).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server 2008:Zmienić nazwę elementu za pomocą XML DML?

  2. Co uczenie maszynowe oznacza dla specjalistów od baz danych

  3. Parsowanie XML - Niedozwolony znak XML (podczas wykonywania procedury składowanej, uruchamianie zapytań procedury nie powoduje żadnych błędów)

  4. Zalecane procesory Intel dla SQL Server 2014 – marzec 2015

  5. Zapytanie z wieloma instrukcjami CASE - optymalizacja