Relazioni one-to-one, tabella uno-a-molti in SQL Server

I progetti di database sono strettamente correlati alle relazioni tra database, l'associazione tra due colonne in una o più tabelle. Le relazioni sono definite sulla base delle colonne chiave corrispondenti. Nel server SQL, queste relazioni vengono definite utilizzando Chiave esterna: chiave esterna vincoli. Viene creato un collegamento tra due tabelle in cui la chiave primaria di una tabella è associata alla chiave esterna di un'altra tabella utilizzando le relazioni del database.

Considera il seguente esempio. Tabella del libro (pk_book_id, titolo, ISBN) é associato a Autore (pk_author_id, author_name, phone_no, fk_book_id). Un libro può avere molti autori. Questa relazione può essere implementata usando (PK_Author_Id come chiave primaria) e (Fk_Author_Id come chiave esterna).

Tipi di relazioni

un. One-One Relationship (1-1 Relationship)
b. One-Many Relationship (1-M Relationship)
c. Relazione molti-molti (relazione M-M)

Questa ricetta tecnica copre solo 1-1 e 1-M relazione.

1. Relazione One-One (rapporto 1-1)

La relazione one-to-one (1-1) è definita come la relazione tra due tabelle in cui entrambe le tabelle devono essere associate tra loro in base a una sola riga corrispondente. Questa relazione può essere creata usando Chiave primaria: vincoli di chiave esterna univoci.

Con la relazione uno a uno in SQL Server, ad esempio, una persona può avere solo un passaporto. Implementiamo questo in SQL Server.

CREATE TABLE dbo.Person (Pk_Person_Id INT IDENTITY PRIMARY KEY, Nome VARCHAR (255), EmailId VARCHAR (255),); CREATE TABLE dbo.PassportDetails (Pk_Passport_Id INT PRIMARY KEY, Passport_Number VARCHAR (255), Fk_Person_Id INT RIFERIMENTI CHIAVE ESTERA UNIQUE dbo.Person (Pk_Person_Id)); INSERISCI IN DBO.Person VALUES ('Niraj', '[email protected]'); INSERISCI IN DBO.Person VALUES ('Vishwanath', '[email protected]'); INSERISCI IN DBO.Person VALUES ('Chetan', '[email protected]'); GO INSERT INTO dbo.PassportDetails VALUES (101, 'C3031R33', 1); INSERISCI IN Dbo.PassportDetails VALUES (102, 'VRDK5695', 2); INSERISCI IN Dbo.PassportDetails VALUES (103, 'A4DEK33D', 3); GO SELECT * FROM dbo.Person SELECT * FROM dbo.PassportDetails; 

La relazione one-to-one è implementata usando dbo.Person (Pk_Person_Id) come la chiave primaria e dbo.PassportDetails (fk_person_id) come (vincolo chiave univoco-chiave esterna).

Pertanto, avrà sempre solo una riga corrispondente tra la tabella di Person-PassportDetails basata sul dbo.Person (Pk_Person_Id) -dbo.PassportDetails (Fk_Person_Id) relazione.

1. Creare due tabelle (tabella A e tabella B) con la chiave primaria su entrambe le tabelle.
2. Creare la chiave esterna nella tabella B che fa riferimento alla chiave primaria della tabella A.
3. Aggiungere un vincolo univoco alla colonna Chiave esterna della tabella B.

Cosa succede se proviamo ad inserire dettagli del passaporto per lo stesso fk_person_id che esiste già nella tabella passportDetails?

Riceviamo un errore di violazione della chiave univoca.

Msg 2627, Livello 14, Stato 1, Violazione della linea 1 del vincolo UNIQUE KEY "UQ__Passport__04554C334F12BBB9". Impossibile inserire la chiave duplicata nell'oggetto "dbo.PassportDetails". Il valore della chiave duplicata è (3). La dichiarazione è stata chiusa.

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

La relazione Uno a molti è definita come una relazione tra due tabelle in cui una riga di una tabella può avere più righe corrispondenti in un'altra tabella. Questa relazione può essere creata usando Chiave primaria: relazione con la chiave esterna.

Nella relazione uno a molti in SQL Server, ad esempio, un libro può avere più autori. Implementiamo questo in SQL Server.

CREATE TABLE dbo.Book (Pk_Book_Id INT PRIMARY KEY, Name VARCHAR (255), ISBN VARCHAR (255)); CREATE TABLE dbo.Author (Pk_Author_Id INT PRIMARY KEY, FullName VARCHAR (255), MobileNo CHAR (10), Fk_Book_Id INT FOREIGN KEY REFERENCES Book (Pk_Book_Id)); INSERISCI I VALORI del libro (1, 'Let is Snow', 'ISBN3030303'); INSERISCI I VALORI del libro (2, "Tre tazze di tè", "ISBN638242"); GO INSERT INTO dbo.Author VALUES (100, 'John Green', '30303', 1); INSERISCI SU dbo.Author VALUES (101, 'Maureen Johnson', '4343', 1); INSERISCI IN Dbo.Author VALUES (102, 'Lauren Myracle', '76665', 1); INSERISCI IN Dbo.Author VALUES (103, 'Greg Mortenson', '6434', 2); INSERISCI SU dbo.Author VALUES (104, 'David Oliver Relin', '72322', 2); GO SELECT * FROM dbo.Book; SELEZIONA * DA dbo.Autore; 

La relazione uno a molti è implementata usando dbo.Book (Pk_Book_Id) come chiave primaria e dbo.Author (Fk_Book_Id) come (chiave esterna). Pertanto, avrà sempre solo uno-a-molti (One Book-Multiple Authors) corrispondenti alle righe tra la tabella Book-Author basata sulla relazione dbo.Book (Pk_Book_Id) -dbo.Author (Fk_Book_Id).

1. Creare due tabelle (tabella A e tabella B) con la chiave primaria su entrambe le tabelle.
2. Creare una chiave esterna nella tabella B che fa riferimento alla chiave primaria della tabella A.