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

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

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


person Abdullah Khan    schedule 03.08.2010    source источник
comment
en.wikipedia.org/wiki/Database_model   -  person Noah Watkins    schedule 03.08.2010


Ответы (9)


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

person Matti Virkkunen    schedule 03.08.2010
comment
Ах, хорошо, так что m и n взяты как переменные, я вижу: D, я думал, что m означает много, и по этой причине n внес путаницу в отношении того, что означает (я не могу обозначать ничего, я имею в виду). В любом случае спасибо :D - person Abdullah Khan; 03.08.2010
comment
К вашему сведению, поскольку никто не упомянул об этом, термин Comp Sci для этой связи называется кардинальностью, см. en.wikipedia.org/wiki/Cardinality_%28data_modeling%29 для получения подробной информации. - person Jason Tan; 03.08.2010

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 в таблицу ссылок вставляется одна строка, содержащая идентификаторы соответствующих строк.

person tdammers    schedule 03.08.2010
comment
таблица ссылок, также известная как таблица соединений - person Matt Ball; 07.12.2010
comment
Вообще никаких -> разве это не отношения 0/1:n? (редко) Мое понимание 1:n состоит в том, что оно должно быть. Например, город должен быть в одной стране, но в странах может быть n городов, в компании может быть n сотрудников, но сотрудник должен работать в одной компании, ... - person Max Binnewies; 28.07.2017
comment
это то, что сводит меня с ума. Связать таблицу, присоединиться к таблице. но вы ПРИСОЕДИНЯЕТЕСЬ к таблицам. у вас также есть кортеж, строка, атрибуты. Я имею в виду, что дизайн базы данных никогда не был полностью определен и допускал использование нескольких слов. Также некоторые слова сильно устарели и вызывают путаницу. Например, целостность домена. Почему это не атрибут Integrity. Или целостность столбца. Слово «домен» настолько расплывчато и используется в других областях. И все это в основном означает проверку ввода, что является термином в области кибербезопасности. АААА - person Robert Cotterman; 22.01.2019

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) — это просто одна таблица, в которой столбец используется в качестве первичного ключа, и другая таблица, в которой этот столбец используется в качестве отношения внешнего ключа.

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

person Ash    schedule 03.08.2010

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

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

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

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

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

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

person nvogel    schedule 03.08.2010

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

person Paul Tomblin    schedule 03.08.2010

Что означает буква «N» на линии связи на диаграмме отношений сущностей? Любой номер

М:Н

M - порядковый номер - описывает минимум (порядковый против обязательного)

N - мощность - описывает миксимум

1:N (n=0,1,2,3...) от одного до нуля или более

M:N (m и n=0,1,2,3...) от нуля или больше до нуля или больше (многие ко многим)

1:1 один к одному

Подробнее здесь: https://www.smartdraw.com/entity-relationship-diagram/< /а>

person unpluggeDloop    schedule 03.12.2019
comment
Преимущество этого ответа заключается в том, что в нем прямо указано, что n в 1: n на самом деле может быть 0 или выше. Вызов n many делает менее очевидным, что 0 и 1 также могут быть включены. - person Sebastian; 17.11.2020

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

person Adrian Regan    schedule 03.08.2010

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

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

person Matovu Ronald    schedule 09.02.2017

Представьте, что у вас есть модель Book и модель Page.

1:N means:
One book can have **many** pages. One page can only be in **one** book.


N:N means:
One book can have **many** pages. And one page can be in **many** books.
person Amin Shojaei    schedule 18.04.2020