Что означают n:m и 1:n в дизайне базы данных?
Имеет ли это какое-либо отношение к ключам или отношениям?
Что означают n:m и 1:n в дизайне базы данных?
Имеет ли это какое-либо отношение к ключам или отношениям?
m:n
используется для обозначения связи "многие ко многим" (m
объекты на другой стороне связаны с n
на другой стороне), а 1:n
относится к связи "один ко многим" (1
объект на другой стороне связан с n
на другой стороне). ).
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 в таблицу ссылок вставляется одна строка, содержащая идентификаторы соответствующих строк.
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) — это просто одна таблица, в которой столбец используется в качестве первичного ключа, и другая таблица, в которой этот столбец используется в качестве отношения внешнего ключа.
Что-то вроде продукта и категории продукта, где одна категория продукта может иметь много продуктов.
В реляционной базе данных все типы отношений представлены одинаково: как отношения. Возможный ключ(и) каждого отношения (и, возможно, также другие ограничения) определяют, какой тип отношения представлен. 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 очень распространены и обычно выделяются как особо важные при проектировании и понимании моделей данных.
Чтобы объяснить эти две концепции на примере, представьте, что у вас есть система ввода заказов для книжного магазина. Сопоставление заказов товарам осуществляется по принципу «многие ко многим» (n:m), потому что в каждом заказе может быть несколько товаров, и каждый товар может быть заказан несколькими заказами. С другой стороны, поиск между покупателями и заказом осуществляется один ко многим (1:n), потому что покупатель может разместить более одного заказа, но заказ никогда не предназначен для более чем одного покупателя.
Что означает буква «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/< /а>
Многие ко многим (n:m) Один ко многим (1:n)
m:n относится к отношениям «многие ко многим», где 1:n означает отношение «один ко многим», например, сотрудник (идентификатор, имя, набор навыков) набор навыков (идентификатор, имя навыка, квалификации)
в этом случае у одного сотрудника может быть много навыков, и, игнорируя другие случаи, вы можете сказать, что это отношения 1: N.
Представьте, что у вас есть модель 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.