sql >> Databasteknik >  >> RDS >> Sqlserver

EF4.1:Möjligt att ha noll-eller-ett till noll-eller-ett (0..1 till 0..1) samband?

Nej det är inte möjligt och jag tvivlar på att det fungerar i SQL-server. Databasrelation kräver att ena änden blir beroende. Det betyder att den refererar till primärnyckel (PK) för en huvudände - vi kallar denna främmande nyckel (FK). Om vi ​​talar om en-till-en relation måste FK markeras som unik så att endast en post i den beroende tabellen kan referera till en given post från huvudtabellen. Den enda giltiga relationen i det här fallet är 0..1 - 1 där principal kan existera utan beroende men beroende kan existera endast när det är relaterat till befintlig huvudman eftersom dess FK-värde måste sättas till PK-värdet för huvudmannen. Teoretiskt kan FK vara nullbar men det beror på hur databasen implementerar unika begränsningar. Om databasen räknar null som ett annat unikt värde kan bara en beroende post ha FK satt till null (jag tror att det här är ett fall av SQL-server).

I EF är detta ännu mer komplicerat eftersom EF inte stöder unika begränsningar och på grund av det kan du bygga en-till-en-relation endast när FK i beroende enhet också är dess PK (=inget sätt att ställa in den på null). Om du inte kan ställa in FK till null kan du inte ha den nullbar och på grund av den huvudenheten måste den existera annars kommer referensintegriteten att ge ett fel.

Den bästa lösningen för dig är att överväga Request som huvudenhet och Result som beroende. Begäran måste skapas först och den måste sparas i databasen så länge som Result . Result måste ha samma PK-värde (kolumnen kan inte ökas automatiskt) som motsvarande Request (och PK måste vara FK för att Request ).



  1. Skapa en nummertabell i MySQL

  2. MySQL:UPPDATERA tabell med COUNT från en annan tabell?

  3. SQL JOIN många-till-många

  4. PostgreSQL:SQL-skript för att få en lista över alla tabeller som har en viss kolumn som främmande nyckel