Значение "n: m" и "1: n" в дизайне базы данных - PullRequest
55 голосов
/ 03 августа 2010

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

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

Ответы [ 7 ]

75 голосов
/ 03 августа 2010

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

46 голосов
/ 03 августа 2010

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

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

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

7 голосов
/ 03 августа 2010

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
)

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

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

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

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

3 голосов
/ 04 августа 2010

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

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

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

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

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

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

3 голосов
/ 03 августа 2010

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

1 голос
/ 03 августа 2010

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

0 голосов
/ 09 февраля 2017

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...