79 votes

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

Dans la conception d'une base de données, que font n:m y 1:n C'est-à-dire ?

Cela a-t-il un rapport avec les clés ou les relations ?

1 votes

111voto

Matti Virkkunen Points 31633

m:n est utilisé pour indiquer une relation de plusieurs à plusieurs ( m les objets de l'autre côté liés à n de l'autre) tandis que 1:n fait référence à une relation de type one-to-many ( 1 de l'autre côté, l'objet lié à n de l'autre).

69voto

tdammers Points 14202

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 de la table B, mais chaque ligne de la table B ne peut référencer qu'une ligne de la table A (ou aucune).

n:m (ou n:n ) signifie "many-to-many" ; chaque ligne de la table A peut faire référence à de nombreuses lignes de la table B, et chaque ligne de la table B peut faire référence à de nombreuses lignes de la table A.

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

A n:m Une solution courante consiste à utiliser une table de liens qui contient deux colonnes de clés étrangères, une pour chaque table qu'elle relie. Pour chaque référence entre la table A et la table B, une ligne est insérée dans la table de liens, contenant les ID des lignes correspondantes.

2 votes

"table de liaison" également connue sous le nom de "table de jonction".

0 votes

"Aucune" -> ne s'agirait-il pas d'une relation 0/1:n ? (rare) Ma compréhension de 1:n est qu'il doit y en avoir une. Comme "Une ville doit être dans un pays, mais les pays peuvent avoir n villes", "Une entreprise peut avoir n employés, mais un employé doit travailler pour une seule entreprise", ...

0 votes

C'est ce qui me rend fou. Link Table, Join table. Mais vous JOIGNEZ des tables. Vous avez aussi des tuple, des row, des attributs. Je veux dire que c'est comme si la conception de la base de données n'avait jamais été spécifiée complètement, et permettait plusieurs mots. De plus, certains mots sont très dépassés et sèment la confusion. Comme Domain Integrity. Pourquoi ce n'est pas attribut Integrity. Ou intégrité de colonne. Le mot domaine est tellement vague, et utilisé dans d'autres domaines. Et tout cela signifie essentiellement la validation des entrées, qui est un terme de la cybersécurité. AHHH

12voto

Ash Points 951

N:m --> si vous ne connaissez pas à la fois n et m, il s'agit simplement de plusieurs à plusieurs et cela est représenté par une table de pont entre deux autres tables, par exemple

   -- 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
)

Il s'agit de la table de pont pour mettre en œuvre le mappage entre deux tables.

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

One to Many (1:n) est simplement une table qui a une colonne comme clé primaire et une autre table qui a cette colonne comme clé étrangère.

Un peu comme un produit et une catégorie de produits, où une catégorie de produits peut contenir plusieurs produits.

6voto

sqlvogel Points 12567

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 quel type de relation est représenté. 1:n et m:n sont deux types de relations binaires :

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

Dans chaque cas, * désigne le ou les attributs clés. {Livre,Auteur} est une clé composée.

C est une relation où chaque employé travaille pour seulement un mais chaque entreprise peut avoir beaucoup de employés (1:n) : B est une relation où un livre peut avoir beaucoup de auteurs et un auteur peut écrire beaucoup de 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 (ayant plus de deux composantes) ; cardinalité fixe (m:n où m et n sont des constantes ou des plages fixes) ; directionnelle ; etc. William Kent, dans son livre "Data and Reality", en identifie au moins 432 types, et ce uniquement pour les relations binaires. Dans la 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 pour la conception et la compréhension des modèles de données.

5voto

Paul Tomblin Points 83687

Pour expliquer ces deux concepts à l'aide d'un exemple, imaginez que vous disposez d'un système de saisie des commandes pour une librairie. La correspondance entre les commandes et les articles est de type "many to many" (n:m), car chaque commande peut comporter plusieurs articles, et chaque article peut être commandé par plusieurs commandes. En revanche, la recherche entre les clients et les commandes est de type 1:n, car un client peut passer plus d'une commande, mais une commande n'est jamais destinée à plus d'un client.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X