Сущность многие ко многим

При проектировании информационных систем с входящими в их состав базами данных удобно пользоваться классификацией моделей изображённой на рис. 1. Все модели данных делятся на три вида, используемые на трёх этапах проектирования. На первом этапе исследуется предметная область, выявляются в ней объекты и процессы, которые нужно будет отобразить в информационной системе при решении задач, для которых разрабатывается информационная система. Модель, используемая на этом этапе, служит для наглядного представления семантических связей в предметной области. Строгая формализация структуры данных на этом этапе не обязательна. Такие модели называются инфологическими. В настоящее время наиболее распространённой инфологической моделью является модель сущность-связь.

Рис. 1. Модели данных

После того как закончено исследование предметной области и детально поставлена задача проектирования можно переходить ко второму этапу, на котором проектируется база данных. На этом этапе используются формальные модели данных, в которые нужно преобразовать инфологическую модель. Такие модели, непосредственно используемые в базах данных, называются даталогическими. На рис.1 показаны три вида датологических моделей: иерархические, сетевые и реляционные.

Иерархическая модель имеет древовидную структуру. Каждая ветвь в такой структуре имеет одну родительскую ветвь и много дочерних. Примерами иерархических систем служат завод, система каталогов с файлами в ЭВМ. Завод состоит из цехов, цеха из участков, участки из станков с рабочими.

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

Наибольшее распространение получили реляционные модели баз данных, о которых подробно будет рассказано в следующей лекции.

Базу данных независимо от её даталогической модели можно по-разному разместить на разных внешних носителях. Например, можно использовать жёский диск или твёрдотельную внешнюю память. Для описания физического размещения базы даных служит физическая модель.

МОДЕЛЬ СУЩНОСТЬ-СВЯЗЬ

Инфологическое моделирование

Информационая система (ИС) создаётся для решения задач некоторой организации (завода, банка, вуза, библиотеки и т.д.). Для создания и эксплуатации ИС требуется её описание. Полное, исчерпывающее, описание ИС должно включать в себя не только саму ИС, но и окружающую среду, то есть, должно быть описанием предметной области.

Подробное описание предметной области можно дать в общем случае только в свободной форме. Для графического описания абстрактной модели проектируемой системы используется UML (Unified Modeling Language – унифицированый язык моделирования). Мы не будем изучать этот язык из-за его чрезмерной абстрактности и сложности.

Существенной, если не главной частью ИС являются хранящиеся в ней данные. При проектировании ИС данные нужно представить в виде простой модели, отображающей смысл данных, их взаимосвязь и не привязываться при этом к конкретному типу базы данных. Такие модели получили название инфологических.

Инфологическую модель можно построить, опираясь только на интуитивное представление о данных.

На рис. 2 приведён простой (вырожденный) пример инфологической модели.

Рис. 2. Инфологическая модель преподавателя

Обратите внимание – преподаватель может вести несколько дисциплин и занимать несколько должностей.

Если нужно более подробно описать дисциплины и иметь возможность, зная дисциплину, найти ведущего её преподавателя, то модель придётся уcложнить, выделив дисциплину отдельно и связав её с преподавателем (рис. 3)

Рис. 3. Инфологическая модель преподаватель-дисциплина

Один преподаватель может вести много дисциплин и одну дисциплину могут вести много преподавателей. Такая связь называется многие ко многим и обозначается как M:N, а на рисунках часто как ∞ ←→ ∞.

На рис. 4 изображена упрощённая инфологическая модель для построения расписания занятий. В реальной задаче нужно учесть много дополнительных факторов. Есть разные виды занятий: лекции, практические, лабораторные и т.д. Лекции проводятся с потоком, а лабораторные – с подгруппами. Расписание зависит от номера недели (чётная, нечётная). На рисунке сразу 6 элементов связаны друг с другом. Такая связь называется связью степени К. На рисунке К=6. Факультет с каферой, кафедра с группой и группа со студентом имеют связи один ко многим.

Рис. 4. Инфологическая модель для построения расписания занятий

На рис. 5 изображена инфологическая модель библиотеки

Рис. 5. Инфологическая модель библиотеки

Как назвать то, что изображено на модели в виде прямоугольников? Категориями? Но категория – очень общее философское понятие. Категории: материя, время, энергия.

Читайте также:  Функция с отрицательной степенью

В 1976 году Чен предложил термин сущность, а состоящая из связанных между собой сущностей модель получила название модель сущность-связь (entity-relation).

Определение

Сущность – это то, что может быть чётко идентифицировано, за чем хотелось бы или необходимо наблюдать в рамках поставленной задачи. Буквально, сущность – это то что существует.

Сущность состоит из множества экземпляров, обладающих одинаковым набором свойств.

Совокупность свойств, необходимая для отличия одного экземпляра от других, называется идентификатором сущности.

Рассмотрим подробно, какими бывают сами сущности, их свойства и связи. В литературе часто вместо термина свойство сущности используют атрибут сущности. Но термин атрибут отношения (колонка, столбец таблицы) применяют в реляционной модели. При одновременном применении обеих моделей может возникнуть путаница.

Виды сущностей

  • бывают сильными и слабыми,
  • делятся на тип и подтип.

Слабая сущность в контексте решаемой задачи не может существовать без сильной. Например, в вузе студент обязательно входит в группу, т.е. сущность студент не может существовать без сущности группа. Сущность деталь не может существовать без сущности изделие, а сущность сотрудник – без сущности отдел.

Если часть экземпляров сущности обладает дополнительными по отношению к другим экземплярам свойствами, то эту часть выделяют в подтип. На рис. 6 сущность студент является подтипом типа житель города, а сущност программист – подтипом типа сотрудник. Между типом и подтипом связь 1:1, но эта связь неполная, так как не каждому экземпляру типа соответствует экземпляр подтипа.

Рис. 6. Тип и подтип

Связи между сущностями

  1. Степени К
  2. Полные и неполные
  3. Типа М:N (Бинарные связи, К=2)
    • 1:1
    • 1:N (на схемах часто используют обозначение 1 ←→ ∞)
    • M:N, M>1, N>1 (∞ ←→ ∞)
    • Рекурсивные (между экземплярами одной сущности)
      • между равноправными экземплярами
      • между неравноправными
      • в одной сущности тип и подтип

      Степень К – количество связанных между собой сущностей. Пример связи степени К=6 показан на рис. 3. Для построенния расписания необходимо, чтобы были связаны ровно по одному экземпляру каждой сущности. Семантические связи между несколькими сущностями могут быть очень сложными даже, на первый взгляд, в простых случаях. У одной пары родителей (рис. 7) может быть несколько детей. Сводные братья и сёстры могут иметь одну мать и разных отцов, или одного отца и разных матерей. Родители могут быть юридичскими (приёмными) и фактическими (кровными), т.е. у одного ребёнка может быть две матери!

      Рис. 7. Связь между детьми и родителями

      Полной связью между двумя сущностями называется такая связь, при которой каждому экземпляру одной сущности соответствует хотя бы один экземпляр другой сущности. Например, каждому студенту соответствует група (одна) и каждой группе соответствуют студенты.

      При частичной связи некоторые экземпляры одной сущности не связаны ни с одним экземпляром другой сущности. Например, не все студенты живут в общежитии.

      Связь типа 1:1 между сущностями встречается нечасто. Теоретически всегда такие сущности можно объединить в одну. Связь 1:1 создают для лучшего понимания модели. Напимер, директора и завод лучше рассматривать как разные сущности. Связь 1:1 коварна кажущейся очевидностью, Например, у государства один глава: император, президент, царь и т.д., но в древнем Риме правили два консула.

      Связь типа 1:N, N>1(или 1 ←→ ∞) – самая простая и удобная для построения реляционной базы данных. На рис.8 приведён пример модели сущность-связь из четырёх сущностей со связями 1:N.

      Рис. 8. Связи M:N

      Связь типа M:N, M>1, N>1(или ∞ ←→ ∞) требует при переходе к реляционной модели строить дополнительное отношение (таблицу связей). Примеры связей типа M:N приведены на рисунках 3, 4, 5.

      Рекурсивные связи между равноправными экземплярами сущности. На рис. 9 экземпляры сущности студенты, живущие в общежитии, объединены по признаку (свойству) номер комнаты, в которой они живут.

      Рис. 9. Рекурсивные связи между студентами,
      живущими в одной комнате

      Рекурсивные связи между неравноправными экземплярами сущности. Так связаны между собой сотрудники и начальник отдела как экземпляры сущности Сотрудники института.

      В одной сущности тип и подтип. Несколько экземпляров сущности, связанные одинаковым значением одного свойства, можно выделить в подтип, т.е. в новую сущность, являющуюся подтипом исходной. На рис. 6 в подтип выделены сотрудники, имеющие должность программист.

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

      Свойства сущностей:

      1. простые и составные (композитные),
      2. однозначные и многозначные,
      3. a и b вместе,
      4. ключевые.

      Простое свойство: фамилия.

      Составное свойство: адрес (страна, область, город, улица, . . .)

      Многозначные: награды, специальности.

      a и b вместе: адрес – композитное и однозначное.

      Читайте также:  Как выбрать селфи палку для своего телефона

      Ключевое: номер зачётной книжки.

      ПРЕОБРАЗОВАНИЕ МОДЕЛИ СУЩНОСТЬ-СВЯЗЬ
      В РЕЛЯЦИОННУЮ МОДЕЛЬ

      Реляционная модель данных строится на основе модели сущность-связь. Каждой сущности из модели сущность-связь в реляционной модели ставится в соответствие отношение (таблица), каждому свойству сущности – атрибут отношения. В отношение, как правило, добавляется атрибут-счётчик, который служит формальным первичным ключом (идентификатором кортежа). В базе данных кортеж – это строка или запись.

      Связь один ко многим

      Для задания связи один ко многим в отношеннии со стороны многие создаётся дополнительный атрибут внешний ключ (рис. 10). Внешний ключ принимает значения только из множества значений первичного ключа отношения со стороны один.

      Рис. 10.Преобразование модели сущность-связь со свзью 1:N в реляционную модель

      Связь многие ко многим

      Для задания связи многие ко многим необходимо создать дополнительную таблицу связей (рис. 11), атрибутами которой служат внешние ключи, соответствующие первичным ключам связываемых таблиц.

      Рис. 11.Преобразование модели сущность-связь со свзью M:N в реляционную модель

      На рис. 12 показаны заполненные таблицы Prep, Disc и PrepDisс. Для того, чтобы указать, что преподаватель Андреев ведёт дисциплину Фортран, в таблице PrepDisc создана строка со значеиями KodP=1 и kodD=3.

      Рис. 12. Пример заполнения таблицы связей в реляционной модели.

      Связь степени К

      Для связи степени К в реляционной модели строится таблица связи с К внешними ключами. На рис. 13 построены модель сущность-связь и реляционная модель для связи степени К=5.

      Связь "многие ко многим" может быть создана только на уровне логической модели. На рис. 55 показан пример связи "многие ко многим". Врач может принимать много пациентов, пациент может лечиться у нескольких врачей. Такая связь обозначается сплошной линией с двумя точками на концах

      Рис. 55. Пример связи «многие ко многим».

      Для внесения связи следует установить курсор на кнопке на панели инструментов ERwin, щелкнуть по одной, затем по другой сущности.

      Связь "многие ко многим" должна именоваться двумя фразами – в обе стороны (в примере "лечит/лечится у"). Это облегчает чтение диаграммы. Связь на рис. 55 следует читать так: Врач Пациента, Пациент

      На физическом уровне связь "многие ко многим" должна быть преобразована. По умолчанию при переходе к физическому уровню ERwin DM автоматически не преобразует связь "многие ко многим", и на физическом уровне диаграмма выглядит так же, как и на логическом (рис. 55). Однако при генерации схемы такая связь игнорируется.

      Для преобразования связи "многие ко многим" необходимо щелкнуть по связи правой кнопкой мыши и выбрать пункт меню Create Association

      Table или выбрать связь и щелкнуть по инструменту на панели трансформаций ERwin Transform Toolbar (см. табл. 5). (Подробнее операции преобразования будут рассмотрены разделе «Трансформации».) Появляется Мастер трансформаций – Many-To-Many Transform Wizard, состоящий из 4 шагов-диалогов. Для перехода к следующему шагу надо щелкнуть по кнопке Next (Далее). На втором и третьем шаге следует задать имя вновь создаваемой таблицы и имя преобразования. Преобразование связи включает создание новой таблицы и двух новых связей "один ко многим" от старых к новой таблице (рис.56). При этом имя новой таблице присваивается как Имя1_Имя2 .

      Рис. 56. Пример автотрансформации связи «многие ко многим».

      Описанного выше решения проблемы связи «многие ко многим» не всегда оказывается достаточно. В примере таблица Врач_Пациент имеет смысл визита к врачу, поэтому ее следует переименовать согласно бизнеслогике в Посещение . Один и тот же пациент может много раз посещать врача, поэтому для того, чтобы идентифицировать визит, необходимо в состав первичного ключа таблицы Посещение добавить дополнительную колонку, например дату-время посещения ( ДатаВремяПосещения , рис. 57).

      Следует заметить, что после переименования таблицы на физическом уровне на логическом уровне представление модели не изменится, диаграмма будет выглядеть так, как на рис. 56.

      Рис. 57. Пример дополнения физического уровня модели после трансформации связи «многие ко многим».

      Типы зависимых сущностей

      Как было указано выше, связи определяют, является ли сущность независимой или зависимой. Различают несколько типов зависимых сущностей.

      Характеристическая – зависимая дочерняя сущность (рис.58), которая связана только с одной родительской и по смыслу хранит информацию о характеристиках родительской сущности.

      Рис. 58. Пример характеристической сущности «Хобби».

      Ассоциативная – сущность, связанная с несколькими родительскими сущностями. Такая сущность содержит информацию о связях сущностей. Примером ассоциативной сущности является Посещение на рис. 57.

      Именующая – частный случай ассоциативной сущности, не имеющей собственных атрибутов (только атрибуты родительских сущностей, мигрировавших в качестве внешнего ключа). Примером именующей сущности является Врач_Пациент на рис. 56.

      Категориальная – дочерняя сущность в иерархии наследования (см. ниже).

      Читайте также:  25 17 Решай или будет поздно

      Иерархия категорий (иерархия наследования).

      Представление об иерархиях категорий, их типах и отображении в нотациях IDEF1X, IE было дано в разделе «Особенности методологий

      Рассмотрим возможные стадии построения иерархии наследования. А) Определение сущностей с общими (но определению) атрибутами. Предположим, в процессе проектирования созданы сущности Посто-

      янный сотрудник и Совместитель (рис. 59). Можно заметить, что часть атрибутов у этих сущностей ( Фамилия, Имя, Отчество, Дата рожде-

      ния, Должность ) имеет одинаковый смысл.

      Рис. 59. Сущности с общими по смыслу атрибутами.

      В случае обнаружения совпадающих по смыслу атрибутов следует создать новую сущность ( Сотрудник ) – родовой предок и перенести в нее общие атрибуты.

      Б) Создание неполной структуры категорий . Создается категориальная связь от новой сущности – родового предка к старым сущностямпотомкам. Новая сущность дополняется атрибутом-дискриминатором категории ( Тип ) (рис. 60).

      Рис. 60. Пример неполной иерархии категорий.

      Рис. 61. Диалог Subtype Properties.

      Для создания категориальной связи следует:

      левой кнопкой мышки щелкнуть по кнопке (см. табл. 11);

      щелкнуть сначала по родовому предку, а затем по потомку;

      для установления второй связи в иерархии категории сначала щелкнуть по символу категории, затем по второму (третьему и т.д.) потомку.

      Для редактирования категорий нужно щелкнуть правой кнопкой мыши по символу категории и выбрать в контекстном меню пункт Subtype Properties. В диалоге Subtype Properties (рис. 61) можно указать атрибут-

      дискриминатор категории Тип (список Discriminator) и тип категории – Incomplete – неполная (раздел Type: опции Complete/Incomplete –

      В) Создание полной структуры категорий . Проводится дополнительный поиск сущностей, имеющих общие по смыслу атрибуты с родовым предком. В примере это сущность Консультант (рис. 62).

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

      категории устанавливается в диалоге Subtype RelationРис. 62. Дополниship (в разделе Type следует выбрать опцию Complete ). тельная сущность.

      Сущность Консультант не имеет атрибута Должность , поэтому в родовом предке значение этого атрибута в случае

      консультанта будет NULL. В зависимости от бизнес-правил атрибут Должность может быть перенесен обратно из родового предка в сущно-

      сти-потомки Постоянный сотрудник и Совместитель или может быть принято решение о том, что для консультанта также требуется указывать должность (рис. 63).

      Рис. 63. Пример полной иерархии категорий.

      Г) Пример комбинации полной и неполной категорий показан на рис.64. Согласно представленному на рисунке фрагменту модели сотрудник может быть совместителем или постоянным сотрудником (неполная категория, т.к. не отображены сотрудники-консультанты), а постоянный сотрудник является любо мужчиной либо женщиной (полная категория).

      Здравствуйте! Не могу понять связь "многие ко многим". Что она значит? Приведите, пожалуйста, пример, когда эту связь нужно устанавливать. Лучше даже пример из жизни приведите, пожалуйста, когда такая связь осуществляется.

      3 ответа 3

      "Один-ко-многим" – тип связи таблиц, когда одной записи главной таблицы можно сопоставить несколько записей подчинённой таблицы. Это наиболее частый вид связи между таблицами. Ну, например, если создавать телефонный справочник, то необходимо учесть, что у одного человека может быть несколько телефонов (2 мобильных, 1 домашний и 1 служебный). Или ещё пример: студент (записи о студентах хранятся в главной таблице) обучается в ВУЗе – он изучает несколько предметов (записи о предметах хранятся в подчинённой таблице), по которым сдаёт экзамены и зачёты.

      А связь "многие-ко-многим" возникает в тех случаях, когда одной записи одной таблицы может соответствовать несколько записей другой таблицы и наоборот: когда одной записи второй таблицы может соответствовать несколько записей первой таблицы. От такого типа связи следует избавляться и приводить к виду "один-ко-многим". Пример такого вида связи: имеем 2 таблицы "Товары" и "Клиенты", каждый клиент может приобрести несколько товаров, в свою очередь каждый товар (по наименованию) может быть приобретён (или заказан) несколькими клиентами. Ещё пример (по ВУЗ): пусть есть 2 таблицы "Преподаватель" и "Студент", каждый преподаватель может обучать нескольких студентов, в то же время каждый студент может обучаться у нескольких преподавателей.

      К примеру есть у нас некий список людей:

      people

      id | name | last_name

      books

      id | name | author

      Что бы сохранить связь (кому какая книга нравится) нужна связь многие ко многим, которая реализуется посредством третьей таблици:

      people_book_like

      people_id | book_id | liked_time

      Связь многие ко многим нужна для связи каких-то сущностей, которых может быть больше одной на сущность 🙂 как то так, немного сумбурно, но я думаю вы поняли о чем я .