En-till-ett, ett till många tabellrelationer i SQL Server

Databasdesign är nära relaterade till databasrelationer, associeringen mellan två kolumner i en eller flera tabeller. Relationer definieras på grundval av matchande nyckelkolumner. I SQL-servern definieras dessa relationer med Primär nyckel-utländsk nyckel begränsningar. En länk skapas mellan två tabeller där den primära nyckeln till ett tabell är associerad med den främmande nyckeln till en annan tabell med databasrelationer.

Tänk på följande exempel. Boktabell (pk_book_id, titel, ISBN) är associerad med Författare (pk_author_id, författarnamn, telefonnummer, fk_book_id). En bok kan ha många författare. Detta förhållande kan implementeras genom att använda (PK_Author_Id som primär nyckel) och (Fk_Author_Id som utländsk nyckel).

Typer av relationer

en. One-One Relationship (1-1 Relationship)
b. One-Many Relationship (1-M Förhållande)
c. Många Många Relationer (M-M Förhållande)

Detta tech-recept täcker bara 1-1 och 1-M-förhållandet.

1. One-One Relationship (1-1 Relationship)

Ett till ett (1-1) förhållande definieras som förhållandet mellan två tabeller där båda tabellerna ska associeras med varandra baserat på endast en matchande rad. Detta förhållande kan skapas med Primär nyckel-Unika främmande nyckelbegränsningar.

Med en-till-en-relation i SQL Server kan exempelvis en person ha bara ett pass. Låt oss implementera detta i SQL Server.

CREATE TABLE dbo.Person (Pk_Person_Id INT IDENTITET PRIMÄR NYCKEL, Namn VARCHAR (255), EmailId VARCHAR (255),); SKAPA TABELL dbo.PassportDetails (Pk_Passport_Id INT PRIMÄR NYCKEL, Passport_Number VARCHAR (255), Fk_Person_Id INT UNIKA ULIKA FRAMTIDSNYCKELA REFERENSER dbo.Person (Pk_Person_Id)); INSERT INTO dbo.Person VALUES ('Niraj', '[email protected]'); INSERT INTO dbo.Person VALUES ('Vishwanath', '[email protected]'); INSERT INTO dbo.Person VALUES ('Chetan', '[email protected]'); GÅ INSERT IN DBO.PassportDetails VALUES (101, 'C3031R33', 1); INSERT IN i dbo.PassportDetails VALUES (102, 'VRDK5695', 2); INSERT IN i dbo.PassportDetails VALUES (103, 'A4DEK33D', 3); GÅ VÄLJ * FRÅN dbo.Person SELECT * FROM dbo.PassportDetails; 

Ett-till-ett-förhållande genomförs med hjälp av dbo.Person (Pk_Person_Id) som primärtangent och dbo.PassportDetails (fk_person_id) som (unik nyckelbegränsning-utländsk nyckel).

Därför kommer det alltid att ha bara en matchande rad mellan Person-PassportDetails-tabellen baserat på dbo.Person (Pk_Person_Id) -dbo.PassportDetails (Fk_Person_Id) relation.

1. Skapa två tabeller (tabell A och tabell B) med den primära nyckeln på båda tabellerna.
2. Skapa utländsk nyckel i tabell B som refererar till primärtangenten i tabell A.
3. Lägg till ett unikt hinder i kolumnen Foreign Key i tabell B.

Vad händer om vi försöker infoga passuppgifter för samma fk_person_id som redan finns i passportDetails-tabellen?

Vi får ett fel på Unik nyckelbrott.

Msg 2627, Nivå 14, Stat 1, Linje 1 Överträdelse av UNIQUE KEY-begränsningen 'UQ__Passport__04554C334F12BBB9'. Kan inte infoga dubbla nyckel i objektet 'dbo.PassportDetails'. Det dubbla nyckelvärdet är (3). Uttalandet har avslutats.

2. One-Many Relationship (1-M Relationship)

Ett-till-många-förhållandet definieras som ett förhållande mellan två tabeller där en rad från ett bord kan ha flera matchande rader i en annan tabell. Detta förhållande kan skapas med Primär nyckel-Utländsk nyckel relation.

I en-till-många förhållanden i SQL Server kan exempelvis en bok ha flera författare. Låt oss implementera detta i SQL Server.

CREATE TABLE dbo.Book (Pk_Book_Id INT PRIMARY KEY, Namn VARCHAR (255), ISBN VARCHAR (255)); SKAPA TABELL dbo.Author (Pk_Author_Id INT PRIMÄR KEY, FullName VARCHAR (255), MobileNo CHAR (10), Fk_Book_Id INT UTANLÄNDDA NYA REFERENSER Bok (Pk_Book_Id)); INSERT IN BOKVÄRDEN (1, 'Let is Snow', 'ISBN3030303'); INSERT IN BOKVÄRDEN (2, "Tre koppar te", "ISBN638242"); GÅ INSERT IN DBO.Author VALUES (100, 'John Green', '30303', 1); INSERT INTO dbo.Author VALUES (101, 'Maureen Johnson', '4343', 1); INSERT INTO dbo.Author VALUES (102, 'Lauren Myracle', '76665', 1); INSERT INTO dbo.Author VALUES (103, 'Greg Mortenson', '6434', 2); INSERT INTO dbo.Author VALUES (104, 'David Oliver Relin', '72322', 2); GÅ VÄLJ * FRÅN dbo.Book; VÄLJ * FRÅN dbo.Author; 

Ett till många förhållande implementeras med hjälp av dbo.Book (Pk_Book_Id) som Primärtangent och dbo.Author (Fk_Book_Id) som (Utländsk nyckel). Således kommer det alltid att ha endast en-till-många (en bok-flera författare) matchande rader mellan bokförfattar-tabellen baserat på dbo.Book (Pk_Book_Id) -dbo.Author (Fk_Book_Id) -förhållandet.

1. Skapa två tabeller (tabell A och tabell B) med den primära nyckeln på båda tabellerna.
2. Skapa en utländsk nyckel i tabell B som refererar till primärtangenten i tabell A.