Связь многие-ко-многим: пример в access, в sql. как сделать связь многие-ко-многим?
Содержание:
- Тестирование связи «многие ко многим»Testing Many-to-Many
- В чём преимущества
- Связь типа «один-к-одному»
- Организация информации в реляционной базе данных
- База данных Кинга
- Когда может быть использована связь многие-ко-многим?
- Связь «Один ко многим»
- Разные базы — разные правила
- База данных Кинга
- Просмотр куба и измерения «многие ко многим»Browsing the Cube and the Many-to-Many Dimension
- Виды и характеристика HDMI кабеля
- Идентифицирующая и неидентифицирующая связи
- Связь «Один-ко-многим»
- Определение связи «многие ко многим»Defining the Many to Many Relationship
- Microsoft Access
- Роль связи многие-ко-многим
- Роль связи многие-ко-многим
- Для чего нужны
- Что такое мощность отношений?
- Когда может быть использована связь многие-ко-многим?
- Связь «Один к одному»
- Связь вида 1:М
Тестирование связи «многие ко многим»Testing Many-to-Many
При задании в кубе связи «многие ко многим» тестирование результатов является обязательным.When you define a many-to-many relationship in a cube, testing is imperative to ensure queries return expected results. Необходимо тестировать куб с помощью клиентского приложения, которое будут использовать конечные пользователи.You should test the cube using the client application tool that will be used by end-users. В следующей процедуре мы откроем куб в Excel, чтобы проверить результаты запросов.In this next procedure, you will use Excel to connect to the cube and verify query results.
Откройте куб в ExcelBrowse the cube in Excel
Разверните проект, затем откройте куб, чтобы подтвердить правильность выполнения агрегирований.Deploy the project and then browse the cube to confirm the aggregations are valid.
В Excel щелкните данные | из других источников | Analysis Services.In Excel, click Data | From Other Sources | From Analysis Services. Введите имя сервера, выберите базу данных и куб.Enter the name of the server, choose the database and cube.
Создайте сводную таблицу, которая использует следующее:Create a PivotTable that uses the following:
Sales Amount как значениеSales Amount as the Value
Sales Reason Name для столбцовSales Reason Name on Columns
Sales Order Number для строкSales Order Number on Rows
Проанализируйте результаты.Analyze the results. Мы используем примеры данных, поэтому на первый взгляд кажется, что все заказы на продажу имеют одинаковые значения.Because we are using sample data, the initial impression is that all sales orders have identical values. Но если выполнить прокрутку результатов вниз, то можно видеть разброс данных.However, if you scroll down, you begin to see data variation.
Немного ниже вы увидите сумму продаж и причины для заказа с номером SO5382.Part way down, you can find the sales amount and sales reasons for order number SO5382
Общая сумма этого заказа — 539,99, а в качестве причин указаны Promotion, Other и Price.Grand total of this particular order is 539.99, and the purchase reasons attributed to this order include Promotion, Other and Price.
Обратите внимание, что столбец Sales Amount для этого заказа вычислен правильно; здесь показано 539,99 за весь заказ.Notice that the Sales Amount is correctly calculated for the order; it is 539.99 for the entire order
Хотя 539,99 указано для каждой причины, это значение не суммируется для всех трех причин, что привело бы к ошибке в общем итоге.Although 539.99 is indicated for each reason, that value is not summed for all three reasons, erroneously inflating our grand total.
А зачем вообще помещать сумму продаж под каждой причиной продажи?Why put a sales amount under each sales reason in the first place? Это позволяет идентифицировать объем продаж, который можно приписать каждой причине.The answer is that it allows us to identify the amount of sales we can attribute to each reason.
Выполните прокрутку до нижней части листа.Scroll to the bottom of the worksheet
Теперь хорошо видно, что Price (Цена) является самой важной причиной для покупок клиентов по сравнению с другими причинами и общей суммой.It is now easy to see that Price is the most important reason for customer purchases, relative to other reasons as well as the grand total.
В чём преимущества
Базы данных и их системы управления заточены на работу с большим объёмом данных и от лица большого числа пользователей. Сейчас вы поймёте.
Скорость — ещё одно преимущество базы данных. База данных устроена так, что она легко и быстро находит, записывает, переписывает и снова находит данные. Всё потому, что СУБД всегда знает, что где лежит и по какому критерию искать. Там не будет случайных данных в случайном месте.
Скорость важна ещё и потому, что СУБД обычно обслуживает сразу много потоков: одновременно ей могут пользоваться десятки и сотни тысяч человек, поэтому ей некогда копаться. В хорошо сделанных БД всё молниеносно.
Сложность. Базы данных нужны в числе прочего для хранения сложно структурированных данных. Мы привыкли думать, что база данных — это такая таблица, где есть строки и столбцы. Но база данных при правильной организации может намного больше:
- Связывать одну единицу данных с множеством других. Например, если один человек совершил много заказов со множеством товаров внутри каждого, база данных способна хранить и обрабатывать такие связи.
- База может хранить дерево данных — вроде того, о котором мы писали недавно. Попробуй в реальной жизни похранить дерево!
- В базах могут жить ссылки на другие фрагменты и отделы базы.
Базу можно представить как таблицу, но лишь в самом упрощённом виде. Для более сложных задач базу можно представить как очень сложное дерево, или огромный склад упорядоченных коробок, или даже как огромный завод по фасовке данных.
Связь типа «один-к-одному»
При связи типа «один-к-одному» каждой
записи в главной таблице может
соответствовать не более одной записи
в подчиненной таблице, и наоборот, каждая
запись в подчиненной таблице не может
иметь более одной соответствующей ей
записи в главной таблице (например, у
гражданина страны есть только один
паспорт, а не много).
Этот тип связи применяется реже, так
как такие данные могут быть помещены в
одну таблицу. Связь типа «один-к-одному»
обычно используют для разделения таблиц,
имеющих много полей, а также для сохранения
сведений, относящихся к подмножеству
записей в главной таблице. Например,
такой тип связи использован при
установлении связей между таблицами
Студенты и Общежитие (см. рис.3.2).
Рис. 3.2. Связи между таблицами в БД Деканат
Организация информации в реляционной базе данных
Информация в реляционной базе данных организуется по следующему принципу: пары таблиц объединяются между собой при помощи совпадающих ключей (одинаковых столбцов), которые называются информационными связями. Выделяют информационные связи трех типов:
- «один к одному». Связи данного типа предполагают наличие в двух связанных таблицах только одного одинакового атрибута;
- «один ко многим». Это означает, что при данном типе связи один атрибут первой таблицы совпадает с несколькими атрибутами во второй;
- «многие ко многим». В данном случае связи между двумя таблицами устанавливаются через несколько соответствующих друг другу атрибутов.
Чтобы информация в таблицах не дублировалась и не возникало затруднений ее обновления из-за необходимости редактирования каждой записи, реляционные базы данных, базу данных требуется нормализовать. Под нормализацией понимается организация данных в БД — создание таблиц и построение связей между ними.
Чаще всего при работе с БД выполняются три основных правила нормализации, что относит базу данных к:
- первой нормальной форме. В таких БД исключаются повторяющиеся группы в отдельных таблицах, для каждого набора связанных данных создаются отдельные таблицы, каждый набор связанных данных идентифицируется при помощи первичного ключа;
- второй нормальной форме. БД, соответствующая второму правилу нормализации, имеет отдельные таблицы, связанные при помощи внешнего ключа и содержащие наборы значений, которые применяются к нескольким записям;
- третьей нормальной форме. Третье правило нормализации исключает из БД не связанные с ключами поля.
Благодаря такой организации сокращается объем избыточных данных в БД, уменьшаются затраты на ее ведение, устраняется противоречивость хранимой в базе информации и обеспечивается ее безопасность.
Узнать более подробно об организации информации в реляционных базах данных все желающие смогут в рамках профессиональной подготовки по курсу «Инструментальные средства бизнес-аналитики», которую проводит ВШБИ НИУ ВШЭ. Записаться на обучение по данному курсу можно на нашем сайте.
База данных Кинга
Эта учебная база данных представляет собой сведения о корпорации Кинга. Среди таблиц:
- сотрудники фирмы — содержит в себе код сотрудника, его фамилию, имя и средний инициал (ориентированность на зарубежные имена), также код начальника и занимаемой сотрудником должности, дату его поступления в фирму, получаемый им оклад и предусмотренные комиссионные, код отдела;
- отделы корпорации — среди полей таблицы есть код и название отдела, а также код его размещения;
- места размещения отделов, которая предполагает внесение информации по коду места размещения и названия города;
- должности в фирме — небольшая таблица с двумя полями кода должности и ее официального названия;
- фирмы-покупатели — поля: код и название покупателя, адрес, город и штат, почтовый код и код региона, телефон, код обслуживающего покупателя менеджера, кредит для покупателя и комментарии (примечания и заметки);
- договоры о продаже, содержащая в себе код и дату договора, код покупателя, дату поставки и общую сумму договора;
- акты продаж — код акта и код договора, в который входит акт, код продукта, его цена, количество приобретенного и общая стоимость покупки;
- товары — код и название продукта;
- цены — код продукта, объявленная на него цена, минимально возможная цена,дата установления и дата отмены цены.
Небольшие таблицы, в наличии у которых не более чем два-три поля, связаны максимум с одной таблицей отношением один-к-одному или один-к-многим.
Масштабные же таблицы, такие как «сотрудники фирмы», «фирмы-покупатели», «договоры о продаже» и «акты продаж» связаны сразу с несколькими сущностями, причем с некоторыми — при помощи «посредников» отношением многие-ко-многим. Таблица «фирмы-покупатели» сама является посреднической, как таковая, ведь в ней есть многие поля, заимствованные из других таблиц и являющиеся внешними ключами. Кроме того, масштабность и взаимосвязь базы данных «Корпорации Кинга» такова, что все отношения неразрывно коррелируют между собой и влияют одно на другое. Разрушение хотя бы одного из них повлечет за собой деструкцию целостности всей БД.
Когда может быть использована связь многие-ко-многим?
Пример связи многие-ко-многим — это студенческая группа и группа преподавателей. Каждый из студентов учится сразу у нескольких профессоров, которые, в свою очередь, читают лекции нескольким ученикам. На картинке показана разница между связью один-к-многим и многие-ко-многим.
Связь многие-ко-многим нередко необходима при составлении масштабных баз данных, мелкие показательные примеры обычно используются только в учебных целях, в реальной же практике получается так, что, чем больше сущностей в БД и больше взаимосвязей между ними — тем более вероятность частого обращения к отношению многие-ко-многим.
Связь «Один ко многим»
В типе связей один ко многим одной записи первой таблицы соответствует несколько записей в другой таблице.
Рассмотрим связь учебной базы данных между должностями и сотрудниками, которая относится к рассматриваемому типу.
Записи должностей в таблице «Должность» уникальны, так как нет смысла повторно создавать имеющуюся запись. Записи в таблице «Сотрудники» также уникальны, но несколько различных сотрудников могут находиться на одинаковой должностной позиции.
Символ ключа на конце связи указывает, что таблица, к которой этой конец прилегает, находится на стороне «один» (связанный столбец является первичным ключом), а символ бесконечности находится на стороне «многие» (такой столбец является внешним ключом).
Разные базы — разные правила
Внутри каждой базы данных и её управляющей системы свои строгие правила:
- какие данные могут храниться: текст, цифры, фото, видео или всё вместе;
- какие свойства есть у этих данных: дата записи, кто записал, кто может прочитать;
- что делать, если с базой хотят работать одновременно несколько человек: разрешать только одному или пусть все вместе работают.
Рабочая ситуация: допустим, вы работаете в банке и открыли карточку клиента, чтобы поменять ему кредитный лимит. В этот же момент другой сотрудник из соседнего офиса тоже хочет поменять лимит этому же клиенту, но уже на другую сумму. Как база отреагирует на такое? Должна ли она разрешать второму сотруднику открывать карточку или её нужно заблокировать, пока первый не закончит? А если она разрешит открыть карточку, то что будет, если двое сотрудников напишут там разный лимит — какой из них сохранять в итоге? СУБД задаёт эти правила и следит за их выполнением.
База данных Кинга
Эта учебная база данных представляет собой сведения о корпорации Кинга. Среди таблиц:
- сотрудники фирмы — содержит в себе код сотрудника, его фамилию, имя и средний инициал (ориентированность на зарубежные имена), также код начальника и занимаемой сотрудником должности, дату его поступления в фирму, получаемый им оклад и предусмотренные комиссионные, код отдела;
- отделы корпорации — среди полей таблицы есть код и название отдела, а также код его размещения;
- места размещения отделов, которая предполагает внесение информации по коду места размещения и названия города;
- должности в фирме — небольшая таблица с двумя полями кода должности и ее официального названия;
- фирмы-покупатели — поля: код и название покупателя, адрес, город и штат, почтовый код и код региона, телефон, код обслуживающего покупателя менеджера, кредит для покупателя и комментарии (примечания и заметки);
- договоры о продаже, содержащая в себе код и дату договора, код покупателя, дату поставки и общую сумму договора;
- акты продаж — код акта и код договора, в который входит акт, код продукта, его цена, количество приобретенного и общая стоимость покупки;
- товары — код и название продукта;
- цены — код продукта, объявленная на него цена, минимально возможная цена,дата установления и дата отмены цены.
Небольшие таблицы, в наличии у которых не более чем два-три поля, связаны максимум с одной таблицей отношением один-к-одному или один-к-многим.
Масштабные же таблицы, такие как «сотрудники фирмы», «фирмы-покупатели», «договоры о продаже» и «акты продаж» связаны сразу с несколькими сущностями, причем с некоторыми — при помощи «посредников» отношением многие-ко-многим. Таблица «фирмы-покупатели» сама является посреднической, как таковая, ведь в ней есть многие поля, заимствованные из других таблиц и являющиеся внешними ключами. Кроме того, масштабность и взаимосвязь базы данных «Корпорации Кинга» такова, что все отношения неразрывно коррелируют между собой и влияют одно на другое. Разрушение хотя бы одного из них повлечет за собой деструкцию целостности всей БД.
Просмотр куба и измерения «многие ко многим»Browsing the Cube and the Many-to-Many Dimension
В меню Сборка выберите команду Развернуть Analysis Services Tutorial.On the Build menu, click Deploy Analysis Services Tutorial.
После успешного завершения развертывания перейдите на вкладку Браузер в конструкторе кубов Службы Analysis ServicesAnalysis Services Tutorial и нажмите кнопку Повторное соединение.When deployment has successfully completed, switch to the Browser tab in Cube Designer for the Службы Analysis ServicesAnalysis Services Tutorial cube, and then click Reconnect.
В область данных панели «Данные» добавьте меру Продажи через Интернет — объем продаж .Add the Internet Sales-Sales Amount measure to the data area of the data pane.
Добавьте определенную пользователем иерархию Причины покупки из измерения Причина покупки в область строк панели данных.Add the Sales Reasons user-defined hierarchy from the Sales Reason dimension to the row area of the data pane.
На панели метаданных разверните узлы Заказчик, Расположение, География заказчика, Члены, Все заказчики, Австралия, щелкните правой кнопкой мыши элемент Квинсленди выберите команду Добавить в фильтр.In the metadata pane, expand Customer, expand Location, expand Customer Geography, expand Members, expand All Customers, expand Australia, right-click Queensland, and then click Add to Filter.
Раскройте каждый из элементов уровня Sales Reason Type , чтобы просмотреть суммы в долларах для каждой из причин, которые выдвинул заказчик из штата Квинсленд (Queensland) в обоснование покупки товара Adventure WorksAdventure Works через Интернет.Expand each member of the Sales Reason Type level to review the dollar values that are associated with each reason a customer in Queensland gave for their purchase of an Adventure WorksAdventure Works product over the Internet.
Обратите внимание, что итоговые суммы по каждой из причин покупки в совокупности больше, чем общая сумма продаж.Notice that the totals that are associated with each sales reason add up to more than the total sales. Это вызвано тем, что некоторые заказчики указали несколько причин покупки.This is because some customers cited multiple reasons for their purchase.
На следующем рисунке показаны панели конструктора кубов Фильтр и Данные .The following image shows the Filter pane and Data pane of Cube Designer.
Виды и характеристика HDMI кабеля
Чтобы получить максимум удовольствия от просмотра, необходимо выбрать правильный шнур.
Существует несколько видов кабеля.
Стандартный
При подключении передаётся высокое качество картинки и звука. Используется для подключения спутниковых и цифровых тюнеров а также DVD-проигрывателей.
Стандартный с Ethernet
Выполнение функций стандартного провода и обеспечение доступа в интернет. Так можно облегчить задачу и избавиться от лишних проводов.
Данный кабель подключает к интернету камеру, PlayStation и т. д.
High Speed
Используется для передачи формата 3D, с углублённой цветопередачей и в Ultra HD. Звук в высоком качестве также обеспечивает данный провод. 4K формат можно смотреть также с данным шнуром (4096 X 2160).
High Speed + Ethernet
Идентифицирующая и неидентифицирующая связи
Связь называется идентифицирующей,
если экземпляр дочерней сущности
идентифицируется через ее связь с
родительской сущностью. Дочерняя
сущность при идентифицирующей связи
всегда является зависимой.
Связь называется неидентифицирующей,
если экземпляр дочерней сущности
идентифицируется иначе, чем через связь
с родительской сущностью. Дочерняя
сущность при неидентифицирующей связи
обычно является относительно независимой
от родительской.
Идентифицирующая связь изображается
сплошной линией; неидентифицирующая –
пунктирной линией. Линии заканчиваются
точкой со стороны дочерней сущности.
Таким образом, связи определяют, является
ли сущность независимой или зависимой.
Связь «Один-ко-многим»
Обратимся к результату выполнения Упр. 2. Теперь, чтобы обозначить у сотрудника его принадлежность к отделу и к занимаемой должности, нужно указать соответствующие значения вторичных ключей и в таблице Сотрудники. Ис-
пользуя значения этих вторичных ключей, можно узнать всю недостающую информацию (например, об окладе или рабочем телефоне) из соответствующих таблиц Должности и От-
делы.
Возникает вопрос: как сказать СУБД, что значения для внешнего ключа Код_Отдела нужно искать в таблице Отделы. Для правильной работы этого механизма необходимо построить Схему данных, отображающую взаимосвязи между таблицами, т.е. установить
СВЯЗИ между внешним ключом в таблице Сотрудники и первичным клю-
чом в таблице Отделы. При этом, очевидно, что единственному, уникальному значению из ключевого поля в таблице Отделы может соответствовать много записей с этим же значением в таблице Сотрудники. Другими словами выполняется условие: В одном отделе работает много сотрудников. То же самое относится и к должности: Одну должность занимают разные сотрудники из разных отделов. Такой тип связи называется
«Один-ко-многим» (1→∞).
Определение связи «многие ко многим»Defining the Many to Many Relationship
Переключитесь в конструкторе кубов на куб Службы Analysis ServicesAnalysis Services Tutorial и откройте вкладку Использование измерений .Switch to Cube Designer for the Службы Analysis ServicesAnalysis Services Tutorial cube, and then click the Dimension Usage tab.
Обратите внимание, что измерение Sales Reason имеет обычную связь, определенную группой мер Internet Sales Reason , но не имеет связи, определенной группами мер Internet Sales или Reseller Sales .Notice that the Sales Reason dimension has a regular relationship defined with the Internet Sales Reason measure group, but has no relationship defined with the Internet Sales or Reseller Sales measure groups. Обратите внимание, что измерение Подробности заказа через Интернет имеет обычную связь, определенную измерением Причина продажи через Интернет , которое в свою очередь имеет Fact Relationship с группой мер Internet Sales .Notice also that the Internet Sales Order Details dimension has a regular relationship defined with the Internet Sales Reason dimension, which in turn has a Fact Relationship with the Internet Sales measure group
Если измерение не найдено (или не найдено другое измерение со связью с обеими группами мер: Причина покупки через Интернет и Продажи через Интернет ), не получится определить связь «многие ко многим».If this dimension was not present (or another dimension with a relationship with both the Internet Sales Reason and the Internet Sales measure group were not present), you would not be able to define the many-to-many relationship.
Щелкните ячейку на пересечении группы мер Продажи через Интернет и измерения Причина покупки , а затем нажмите кнопку обзора (…).Click the cell at the intersection of the Internet Sales measure group and the Sales Reason dimension and then click the browse button (…).
В диалоговом окне Задание связи в списке Выберите тип связи укажите значение Многие ко многим .In the Define Relationship dialog box, select Many-to-Many in the Select relationship type list.
Требуется определить промежуточную группу мер, соединяющую измерение Sales Reason и группу мер Internet Sales.You have to define the intermediate measure group that connects the Sales Reason dimension to the Internet Sales measure group.
В списке Промежуточная группа мер выберите значение Internet Sales Reason.In the Intermediate measure group list, select Internet Sales Reason.
На следующем рисунке отражены изменения, сделанные в диалоговом окне Задание связи .The following image shows the changes in the Define Relationship dialog box.
Нажмите кнопку ОК.Click OK.
Обратите внимание на значок «многие ко многим», который отражает связь между измерением Sales Reason и группой мер Internet Sales.Notice the many-to-many icon that represents the relationship between the Sales Reason dimension and the Internet Sales measure group.
Microsoft Access
Офисный программный продукт от «Майкрософт» известен на рынке ПО уже довольно продолжительное время. Он поставляется вместе с текстовым редактором Worfd, табличным процессором Excel и прочими, входящими в линейку «офиса». Можно Access (читается как «аксес«, дословный перевод — «доступ») приобрести и отдельно от его «коллег». Рекомендуется купить, разумеется, лицензионный софт, но ни для кого не секрет, сколько пиратских репаков можно найти на просторах Сети, в виде обычных файлов или раздач торрентов. «Майкрософт Аксес» доступен даже в портативной сборке. Она, не требующая инсталляции и особых навыков работы с ПК, лучше всего подходит для выбора, если ПО не будет использоваться продолжительно и часто.
Из контекста ясно, что «Майкрософт Аксес» — это система управления базами данных. Причем одна из популярнейших. Она является реляционной, что значит, она основана на логической модели данных, которая в ходе своей работы обращается к теории множеств и логике первого порядка. Связь многие-ко-многим в Access (примеры будут даны в ходе объяснения) реализуется очень и очень просто. Рассмотрим ее.
Роль связи многие-ко-многим
Вообще отношения между сущностями в базах данных используются для целостности информации, в них хранящейся. Только хорошо спроектированная БД со всеми необходимыми связями гарантирует безопасность хранения, удобство работы и представляет собой структуру, устойчивую к внешним воздействиям и изменениям. Обычно, если база содержит данные о целой организации, компании или фирме, в ней содержится множество сущностей с различными экземплярами.
А это значит, что при составлении схемы данных (в «Аксесе») или написании скриптов (в «Оракл» или «ДиБиТу») будет присутствовать как минимум одна связь многие-ко-многим. Пример SQl, часто использующийся при обучении курса «Организации баз данных» — БД Кинга.
Роль связи многие-ко-многим
Вообще отношения между сущностями в базах данных используются для целостности информации, в них хранящейся. Только хорошо спроектированная БД со всеми необходимыми связями гарантирует безопасность хранения, удобство работы и представляет собой структуру, устойчивую к внешним воздействиям и изменениям. Обычно, если база содержит данные о целой организации, компании или фирме, в ней содержится множество сущностей с различными экземплярами.
А это значит, что при составлении схемы данных (в «Аксесе») или написании скриптов (в «Оракл» или «ДиБиТу») будет присутствовать как минимум одна связь многие-ко-многим. Пример SQl, часто использующийся при обучении курса «Организации баз данных» — БД Кинга.
Для чего нужны
Вот основные задачи БД на примере гардеробной:
- Сохранить наши данные по запросу — чтобы вы могли открыть дверь, повесить куртку, закрыть дверь и больше не думать ни о куртке, ни о гардеробной.
- Изменить наши данные по запросу — чтобы можно было легко извлечь из гардеробной все дырявые носки и положить на их место целые.
- Найти эти данные по запросу — чтобы быстро найти приличный пиджак или парный носок.
- Не дать прочитать эти данные тем, кому не следует, а кому надо — дать. Например, младший брат может смотреть на ваши кроссовки, но не может их брать. А девушка (или парень) может положить свои вещи, но только на определённую полку.
- Поддерживать порядок и не дать захламиться — если вам было лень и вы просто кинули толстовку куда попало, чтобы гардеробная либо сама нашла, куда эту толстовку правильно положить, либо сказала: «Э БРАТ ЗАЧЕМ ЗАХЛАМЛЯЕШЬ ПОЛОЖИ НОРМАЛЬНО ДАВАЙ»
- Масштабироваться — чтобы вы могли просто вешать в гардеробную вещи и не думать об объёме полок.
- Не потерять данные — если квартира будет гореть, приличная гардеробная не должна даже нагреться. Или, если она всё-таки горит, чтобы где-то в защищённом подземном гараже была точная копия этой гардеробной со всеми актуальными вещами.
Что такое мощность отношений?
Когда вы создаете отношение между двумя таблицами, вы получаете два значения, которые могут быть 1 или * на двух концах отношения между двумя таблицами, называемые кардинальностью или мощностью отношений.
Два значения 1 или * говорят о том, что поле в этой взаимосвязи имеет определенное число значения на строку в этой таблице. Давайте проверим это на примере.
В таблице Stores у нас есть одно уникальное значение для stor_id на строку.
Таким образом, если это поле участвует в одной стороне отношения, то эта сторона примет 1 в качестве показателя кардинальности, который называется ОДНОЙ стороной отношения.
Однако stor_id в таблице Sales не уникален для каждой строки данных в этой таблице. У нас есть несколько строк для каждого stor_id. Или скажем так; в каждом магазине происходит несколько торговых транзакций (что, конечно, нормально):
Таким образом, если stor_id в таблице Sales является частью отношения, эта сторона отношения станет *, или то, что мы называем «МНОЖЕСТВЕННОЙ» стороной отношения.
Итак, основываясь на том, что мы знаем в данный момент, если мы создадим отношение на основе stor_id между двумя таблицами Sales и Stores, то получим вывод:
Эти отношения могут быть прочитаны двумя способами;
- Отношение “один-ко-многим” (1- *) из таблицы магазинов в таблицу продаж
- Отношение «многие-к-одному» (* -1) из таблицы продаж в таблицу магазинов
Они оба, конечно, одинаковы, и они будут выглядеть точно так же, как каждое из них в представлении схемы. Теперь, когда вы знаете, что такое мощность отношений, давайте изучим все виды мощности.
Когда может быть использована связь многие-ко-многим?
Пример связи многие-ко-многим — это студенческая группа и группа преподавателей. Каждый из студентов учится сразу у нескольких профессоров, которые, в свою очередь, читают лекции нескольким ученикам. На картинке показана разница между связью один-к-многим и многие-ко-многим.
Связь многие-ко-многим нередко необходима при составлении масштабных баз данных, мелкие показательные примеры обычно используются только в учебных целях, в реальной же практике получается так, что, чем больше сущностей в БД и больше взаимосвязей между ними — тем более вероятность частого обращения к отношению многие-ко-многим.
Связь «Один к одному»
Связь один к одному образуется, когда ключевой столбец (идентификатор) присутствует в другой таблице, в которой тоже является ключом либо свойствами столбца задана его уникальность (одно и тоже значение не может повторяться в разных строках).
На практике связь «один к одному» наблюдается не часто. Например, она может возникнуть, когда требуется разделить данных одной таблицы на несколько отдельных таблиц с целью безопасности.
В учебной безе данных нет подходящего примера, но гипотетически могла бы существовать необходимость разделения таблицы сотрудников.
Пример: Представьте, что базой данных пользуются несколько менеджеров и аналитиков, а таблица «Сотрудники» содержит те же столбцы, что и учебная база. Следовательно, доступ к персональным данным может получить любой из упомянутых работников.
Чтобы устранить возможность утечки конфиденциальной информации, принимается решение о переносе информации паспортных данных в отдельную таблицу, доступ к которой предоставляется ограниченному кругу лиц.
Связь вида 1:М
Определение 3
Связь 1:М создается, если одной записи основной таблицы соответствуют более одной записи вспомогательной таблицы.
Пример 3
Рассмотрим связанные таблицы О и Д. Таблица О содержит информацию о видах мультимедийных устройств, а таблица Д – сведения о фирмах, которые производят эти устройства, и о наличии как минимум одного устройства на складе.
Таблица Д содержит 2 ключевых поля, поскольку одна фирма может производить устройства нескольких видов.
Если сопоставить записи таблиц по полю Код, то получим новые псевдозаписи. Например, псевдозапись (a, CD-ROM, Acer, да).
При сведении псевдозаписей в новую таблицу можно получить полную информацию обо всех видах мультимедийных устройств ПЭВМ, фирмах, которые их производят, и сведения о наличии этих устройств на складе.