web-dev-qa-db-fra.com

Signification de "n: m" et "1: n" dans la conception de base de données

Dans la conception de la base de données, que signifie n: m et 1: n

Cela a-t-il quelque chose à voir avec des clés ou des relations?

52
Abdullah Khan

m:n désigne une relation plusieurs-à-plusieurs (les objets m de l'autre côté liés à n de l'autre), alors que 1:n fait référence à une relation un-à-plusieurs (l'objet 1 de l'autre côté lié à n ).

71
Matti Virkkunen

1: n signifie "un-à-plusieurs"; vous avez deux tables et chaque ligne de la table A peut être référencée par un nombre quelconque de lignes dans la table B, mais chaque ligne de la table B ne peut référencer qu'une seule ligne de la table A (ou aucune).

n: m (ou n: n) signifie "plusieurs-à-plusieurs"; chaque ligne de la table A peut référencer plusieurs lignes de la table B et chaque ligne de la table B peut référencer de nombreuses lignes de la table A.

Une relation 1: n est généralement modélisée à l'aide d'une clé étrangère simple: une colonne de la table A fait référence à une colonne similaire de la table B, généralement la clé primaire. Étant donné que la clé primaire identifie de manière unique une seule ligne, cette ligne peut être référencée par plusieurs lignes de la table A, mais chaque ligne de la table A ne peut faire référence qu'à une seule ligne de la table B.

Une relation n: m ne peut pas être faite de cette façon; une solution courante consiste à utiliser une table de liens contenant deux colonnes de clé étrangère, une pour chaque table liée. Pour chaque référence entre la table A et la table B, une ligne est insérée dans la table des liens, contenant les ID des lignes correspondantes.

45
tdammers

n: m -> si vous ne connaissez pas n et m, c’est tout simplement beaucoup, et il est représenté par une table de pontage entre 2 autres tables comme

   -- This table will hold our phone calls.
CREATE TABLE dbo.PhoneCalls
(
   ID INT IDENTITY(1, 1) NOT NULL,
   CallTime DATETIME NOT NULL DEFAULT GETDATE(),
   CallerPhoneNumber CHAR(10) NOT NULL
)

-- This table will hold our "tickets" (or cases).
CREATE TABLE dbo.Tickets
(
   ID INT IDENTITY(1, 1) NOT NULL,
   CreatedTime DATETIME NOT NULL DEFAULT GETDATE(),
   Subject VARCHAR(250) NOT NULL,
   Notes VARCHAR(8000) NOT NULL,
   Completed BIT NOT NULL DEFAULT 0
)

c'est la table de pont pour la mise en oeuvre du mappage entre 2 tables

CREATE TABLE dbo.PhoneCalls_Tickets
(
   PhoneCallID INT NOT NULL,
   TicketID INT NOT NULL
)

Un à plusieurs (1: n) est simplement une table avec une colonne comme clé primaire et une autre table avec cette colonne comme relation de clé étrangère

Type de produit similaire et catégorie de produit pouvant contenir plusieurs produits

6
Ash

Pour expliquer les deux concepts par exemple, imaginons que vous disposiez d’un système de saisie des commandes pour une librairie. Le mappage des commandes aux articles est multiple (n: m) car chaque commande peut avoir plusieurs articles et chaque article peut être commandé en plusieurs commandes. D'autre part, une recherche entre clients et commande est un à plusieurs (1: n) car un client peut passer plus d'une commande, mais une commande ne concerne jamais plus d'un client.

3
Paul Tomblin

Dans une base de données relationnelle, tous les types de relations sont représentés de la même manière: en tant que relations. La ou les clés candidates de chaque relation (et éventuellement d'autres contraintes) déterminent le type de relation représenté. 1: n et m: n sont deux types de relation binaire:

C {Employee*,Company}
B {Book*,Author*}

Dans chaque cas, * désigne le ou les attributs de clé. {Book, Author} est une clé composée.

C est une relation où chaque employé ne travaille que pour un entreprise mais chaque entreprise peut avoir plusieurs employés (1: n): B est une relation où un livre peut avoir plusieurs les auteurs et un auteur peuvent écrire plusieurs livres (m: n):

Notez que les contraintes clés garantissent que chaque employé ne peut être associé qu'à une seule entreprise alors que toute combinaison de livres et d'auteurs est autorisée.

D'autres types de relations sont également possibles: n-aire (comportant plus de deux composants); cardinalité fixe (m: n où m et n sont des constantes ou des plages fixes); directionnel; etc. William Kent dans son livre "Data and Reality" identifie au moins 432 types - et ce n'est que pour les relations binaires. En pratique, les relations binaires 1: n et m: n sont très courantes et sont généralement considérées comme particulièrement importantes dans la conception et la compréhension de modèles de données.

3
nvogel

Plusieurs à plusieurs (n: m) Un à plusieurs (1: n)

1
Adrian Regan

m: n fait référence à plusieurs relations entre plusieurs personnes où 1: n signifie une relation entre plusieurs personnes.

dans ce cas, un employé peut avoir de nombreuses compétences et, en ignorant les autres cas, vous pouvez affirmer qu'il s'agit d'une relation 1: N

0
Matovu Ronald