Relations de table un à un, un à plusieurs dans SQL Server

Les conceptions de base de données sont étroitement liées aux relations entre bases de données, l'association entre deux colonnes dans une ou plusieurs tables. Les relations sont définies sur la base des colonnes de clés correspondantes. Dans SQL Server, ces relations sont définies à l'aide de Clé primaire-clé étrangère contraintes. Un lien est créé entre deux tables, la clé primaire d'une table étant associée à la clé étrangère d'une autre table à l'aide de relations de base de données.

Prenons l'exemple suivant. Table de livre (pk_book_id, titre, ISBN) est associée à Author (pk_author_id, author_name, phone_no, fk_book_id). Un livre peut avoir plusieurs auteurs. Cette relation peut être implémentée en utilisant (PK_Author_Id en tant que clé primaire) et (Fk_Author_Id en tant que clé étrangère).

Types de relations

une. Relation one-one (relation 1-1)
b. Relation un-multiple (relation 1-M)
c. Relation nombreux-multiples (relation M-M)

Cette recette technique ne couvre que Relation 1-1 et 1-M.

1. Relation un à un (relation 1-1)

La relation un-à-un (1-1) est définie comme la relation entre deux tables, les deux tables devant être associées l'une à l'autre en fonction d'une seule ligne correspondante. Cette relation peut être créée en utilisant Clé primaire - Contraintes de clé étrangère uniques.

Avec la relation un à un dans SQL Server, par exemple, une personne ne peut posséder qu'un seul passeport. Implémentons cela dans SQL Server.

CREATE TABLE dbo.Person (Pk_Person_Id INT CLÉ PRIMAIRE, Nom VARCHAR (255), EmailId VARCHAR (255),); CREATE TABLE dbo.PassportDetails (Pk_Passport_Id INT, CLÉ PRIMAIRE, Numéro de passeport VARCHAR (255), Fk_Person_Id INT RÉFÉRENCES DE CLÉ ÉTRANGÈRE UNIQUES 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]'); GO INSERT INTO dbo.PassportDetails VALUES (101, 'C3031R33', 1); INSERT INTO dbo.PassportDetails VALUES (102, 'VRDK5695', 2); INSERT INTO dbo.PassportDetails VALUES (103, 'A4DEK33D', 3); GO SELECT * FROM dbo.Person SELECT * FROM dbo.PassportDetails; 

La relation un à un est mise en œuvre en utilisant dbo.Person (Pk_Person_Id) comme clé primaire et dbo.PassportDetails (fk_person_id) as (clé unique contrainte-clé étrangère).

Par conséquent, il n'y aura toujours qu'une seule ligne correspondante entre la table Person-PassportDetails en fonction du dbo.Person (Pk_Person_Id) -dbo.PassportDetails (Fk_Person_Id) relation.

1. Créez deux tables (Table A et Table B) avec la clé primaire sur les deux tables.
2. Créez une clé étrangère dans la table B qui fait référence à la clé primaire de la table A.
3. Ajoutez une contrainte unique dans la colonne Clé étrangère du tableau B.

Que se passe-t-il si nous essayons d'insérer les détails du passeport pour le même fk_person_id qui existe déjà dans la table passportDetails?

Nous obtenons une erreur de violation de clé unique.

Msg 2627, niveau 14, état 1, ligne 1 Violation de la contrainte UNIQUE KEY 'UQ__Passport__04554C334F12BBB9'. Impossible d'insérer la clé en double dans l'objet 'dbo.PassportDetails'. La valeur de la clé en double est (3). La déclaration a été terminée.

2. Relation un-plusieurs (relation 1-M)

La relation un-à-plusieurs est définie comme une relation entre deux tables, une ligne d'une table pouvant avoir plusieurs lignes correspondantes dans une autre table. Cette relation peut être créée en utilisant Relation clé primaire-clé étrangère.

Dans la relation un à plusieurs dans SQL Server, par exemple, un livre peut avoir plusieurs auteurs. Implémentons cela dans SQL Server.

CREATE TABLE dbo.Book (Pk_Book_Id INT, CLÉ PRIMAIRE, Nom VARCHAR (255), ISBN VARCHAR (255)); CREATE TABLE dbo.Author (Pk_Author_Id INT, CLÉ PRIMAIRE, Nom complet VARCHAR (255), MobileNo CHAR (10), Fk_Book_Id INT. RÉFÉRENCES DE CLÉS ÉTRANGÈRES Book (Pk_Book_Id)); INSERT INTO Book VALUES (1, 'Let is Snow', 'ISBN3030303'); INSERT INTO Book VALUES (2, «Trois tasses de thé», «ISBN638242»); GO 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); GO SELECT * FROM dbo.Book; SELECT * FROM dbo.Author; 

La relation un à plusieurs est mise en œuvre à l'aide de dbo.Book (Pk_Book_Id) en tant que clé primaire et dbo.Author (Fk_Book_Id) en tant que (clé étrangère). Ainsi, il n'aura toujours que des lignes correspondant à un-plusieurs-auteurs (un livre-plusieurs auteurs) entre la table Book-Author basée sur la relation dbo.Book (Pk_Book_Id) -dbo.Author (Fk_Book_Id).

1. Créez deux tables (Table A et Table B) avec la clé primaire sur les deux tables.
2. Créez une clé étrangère dans la table B qui fait référence à la clé primaire de la table A.