Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

EF4.1:Възможно ли е да има връзка нула или едно към нула или едно (0..1 към 0..1)?

Не, не е възможно и се съмнявам, че работи в SQL сървър. Отношението на базата данни изисква единият край да стане зависим. Това означава, че препраща към първичен ключ (PK) на главен край - наричаме този външен ключ (FK). Ако говорим за релация едно към едно, FK трябва да бъде маркиран като уникален, така че само един запис в зависимата таблица да може да препраща към даден запис от основната таблица. Единствената валидна връзка в този случай е 0..1 - 1, където принципалът може да съществува без зависим, но зависимият може да съществува само когато е свързан със съществуващ принципал, тъй като неговата FK стойност трябва да бъде зададена на PK стойност на принципала. Теоретично FK може да бъде nullable, но зависи от начина, по който базата данни прилага уникални ограничения. Ако базата данни брои null като друга уникална стойност, само един зависим запис може да има FK, зададен на null (мисля, че това е случай на SQL сървър).

В EF това е още по-сложно, тъй като EF не поддържа уникални ограничения и поради това можете да изградите релация едно към едно само когато FK в зависим обект също е негов PK (=няма начин да го настроите на нула). Ако не можете да зададете FK на null, не можете да го направите nullable и поради този основен обект трябва да съществува, в противен случай референтната цялост ще изведе грешка.

Най-доброто решение за вас е да обмислите Request като основен обект и Result като зависими. Заявката трябва да бъде създадена първо и трябва да се съхранява в базата данни, докато Result . Result трябва да има същата PK стойност (колоната не може да се увеличава автоматично) като съответната Request (и PK трябва да е FK за 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. Каква е ползата от използването на SET XACT_ABORT ON в съхранена процедура?

  2. DevOps:DBA или разработчик – Получаване на правилния баланс

  3. Конфигурации с обхват на базата данни на SQL Server и автоматична корекция на план

  4. Как да вмъкна в две таблици наведнъж в съхранена процедура?

  5. Някакъв начин за вмъкване или актуализиране на SQLBulkCopy, ако съществува?