В дизайне базы данных, что означают 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 - это отношение, в котором книга может иметь много авторов, а автор может писать книги many (m: n):
Обратите внимание, что ключевые ограничения гарантируют, что каждый сотрудник может быть связан только с одной компанией, тогда как любая комбинация книг и авторов разрешена.
Возможны и другие виды отношений: n-ary (с более чем двумя компонентами); фиксированная мощность (m: n, где m и n - фиксированные константы или диапазоны); направленный; и так далее. Уильям Кент в своей книге "Данные и реальность" идентифицирует не менее 432 видов - и это просто для двоичных отношений. На практике бинарные отношения 1: n и m: n очень распространены и обычно выделяются как особенно важные при проектировании и понимании моделей данных.
Чтобы объяснить два понятия на примере, представьте, что у вас есть система ввода заказов для книжного магазина. Отображение заказов для элементов много для многих (n: m), потому что каждый заказ может иметь несколько элементов, и каждый элемент можно упорядочить несколькими порядками. С другой стороны, поиск клиентов и заказов один-на-один (1: n), потому что клиент может разместить несколько заказов, но заказ никогда не может быть более одного клиента.
От многих до многих (n: m) От одного до большого (1: n)
m: n относится ко многим отношениям где 1: n означает отношение один к другому например сотрудник (номер, имя, Skillset) Skillset (идентификатор, skillname, квалификация)
в этом случае один сотрудник может иметь много навыков и игнорировать другие случаи, вы можете сказать, что его отношение 1: N