it-roy-ru.com

Значение "n: m" и "1: n" в дизайне базы данных

В дизайне базы данных, что означает n: m и 1: n

Это имеет какое-либо отношение к ключам или отношениям?

52
Abdullah Khan

m:n используется для обозначения отношения «многие ко многим» (объекты m с другой стороны, связанные с n с другой стороны), в то время как 1:n ссылается на отношение «один ко многим» (объект 1 с другой стороны, связанный с n с другой стороны) ).

71
Matti Virkkunen

1: n означает «один ко многим»; у вас есть две таблицы, и на каждую строку таблицы A может ссылаться любое количество строк в таблице B, но каждая строка в таблице B может ссылаться только на одну строку в таблице A (или вообще ни на одну).

n: m (или n: n) означает «многие ко многим»; каждая строка в таблице A может ссылаться на множество строк в таблице B, а каждая строка в таблице B может ссылаться на множество строк в таблице A.

Отношение 1: n обычно моделируется с использованием простого внешнего ключа - один столбец в таблице A ссылается на аналогичный столбец в таблице B, обычно это первичный ключ. Поскольку первичный ключ однозначно идентифицирует ровно одну строку, на эту строку может ссылаться множество строк в таблице A, но каждая строка в таблице A может ссылаться только на одну строку в таблице B.

Отношения n: m не могут быть сделаны таким образом; Распространенным решением является использование таблицы ссылок, которая содержит два столбца внешнего ключа, по одному для каждой таблицы, на которую она ссылается. Для каждой ссылки между таблицей A и таблицей B в таблицу ссылок вставляется одна строка, содержащая идентификаторы соответствующих строк.

45
tdammers

n: m -> если вы не знаете и n, и m, это просто много ко многим, и оно представлено таблицей мостов между двумя другими таблицами, такими как

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

это таблица моста для реализации отображения между двумя таблицами

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

Один ко многим (1: n) - это просто одна таблица, в которой столбец является первичным ключом, а другая таблица, в которой этот столбец является отношением внешнего ключа.

Вроде как продукт и категория продукта, где одна категория продукта может иметь много продуктов

6
Ash

Чтобы объяснить эти две концепции на примере, представьте, что у вас есть система ввода заказов для книжного магазина. Соотношение заказов к элементам много-много (n: m), поскольку в каждом заказе может быть несколько элементов, и каждый элемент может быть заказан несколькими заказами. С другой стороны, поиск между покупателями и заказом - это один ко многим (1: n), потому что клиент может разместить более одного заказа, но заказ никогда не выполняется для нескольких клиентов.

3
Paul Tomblin

В реляционной базе данных все типы отношений представлены так же, как и отношения. Ключ (и) кандидата каждого отношения (и, возможно, других ограничений) определяют, какой тип отношений представляется. 1: n и m: n - два вида бинарных отношений:

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

В каждом случае * обозначает ключевой атрибут (ы). {Книга, Автор} является составным ключом.

C - это отношение, при котором каждый сотрудник работает только на одну компанию, но каждая компания может иметь много сотрудников (1: n): B - это отношение, где книга может иметь много Авторы и автор могут написать много книг (m: n):

Обратите внимание, что ключевые ограничения гарантируют, что каждый сотрудник может быть связан только с одной компанией, тогда как любая комбинация книг и авторов допускается.

Возможны и другие виды отношений: n-арные (имеющие более двух компонентов); фиксированная мощность (m: n, где m и n - фиксированные константы или диапазоны); направленный; и так далее. Уильям Кент в своей книге «Данные и реальность» выделяет как минимум 432 вида - и это только для бинарных отношений. На практике бинарные отношения 1: n и m: n очень распространены и обычно выделяются как особенно важные при разработке и понимании моделей данных.

3
nvogel

Многие ко многим (n: m) Один ко многим (1: n)

1
Adrian Regan

m: n обозначает отношение «многие ко многим» где 1: n означает отношение «один ко многим» пример сотрудник (идентификатор, имя, набор навыков) набор навыков (идентификатор, имя навыка, квалификации)

в этом случае один сотрудник может иметь много навыков, и, игнорируя другие случаи, можно сказать, что это отношение 1: N

0
Matovu Ronald