Популярные услуги

КМ-6. Динамические массивы. Семинар - выполню любой вариант!
КМ-2. Разработка простейших консольных программ с использованием ООП + КМ-4. Более сложные элементы ООП - под ключ!
Оба семинара по программированию под ключ! КМ-2. Разработка циклических алгоритмов + КМ-3. Функции и многофайловые программы в Си
Любая задача на C/C++
Одно любое задание в mYsql
Сделаю ваше задание: Лабораторная работа на Pascal / Lazarus
Любой тест по базам данных максимально быстро на хорошую оценку - или верну деньги!
Любой реферат по объектно-ориентированному программированию (ООП)
Повышение уникальности твоей работе
Все письменные КМ под ключ за 3 суток! (КМ-6 + КМ-7 + КМ-8 + КМ-9 + КМ-10)
Главная » Лекции » Информатика и программирование » Основные сведения о базах данных » Особенности проектирования многотабличных БД

Особенности проектирования многотабличных БД

2021-03-09СтудИзба

Тема 6. ОСОБЕННОСТИ ПРОЕКТИРОВАНИЯ МНОГОТАБЛИЧНЫХ БАЗ ДАННЫХ

Как правило, базы данных Access являются многотабличными базами данных. Поэтому, немаловажным и достаточно трудоемким процессом является проектирование структуры баз данных, состоящее прежде всего в эффективно распределении данных между таблицами.

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


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

В базе данных может хранится информация о сотрудниках.

Сотрудник                           Информация о ком.                                   Ком


Рекомендуемые материалы

Каждая запись данных таблиц идентифицирует один объект. Сотрудника, Информация о его ком., Информация о предприятии-командире.

Отношения между таблицами определяется отношением между объектами (полями).

Существуют четыре типа отношений между таблицами:

- «один-к-одному»

- «один-ко-многим»

- «много-к-одному»

- «много-ко-многим»

Отношение «один-к-одному» означает, что каждая запись в одной таблице соответствует только одной записи в другой таблице.

Например, таблицы Физические лица и

.


Обе таблицы содержат информацию о сотрудниках компании, но в таблице Физические лица содержатся данные о личности сотрудника, а в таблице Сотрудники профессиональные сведения. Между таблицами Физические лица и Сотрудники существуют отношения «один-к-одному », поскольку для одного человека может существовать только одна запись, содержащая профессиональные сведения.

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

Отношение «один-ко-многим » предполагает, что каждой записи в одной таблице может соответствовать несколько записей другой таблицы. Так, например, один и тот же сотрудник может несколько раз ездить в команд. Кроме того, в один и тот же город могут ездить несколько сотрудников. То есть, между таблицами Сотрудники и Информация о ком., а так же информация о ком. и Ком. Существует связь «один-ко-многим».

Отношение «много-к-одному » аналогично рассмотренному ранее типу «один-ко-многим» и зависит от точки зрения на отношение.

Отношение «много-ко-многим » возникает в том случае, если:

- одна запись из первой таблицы может быть связана с боле чем одной записью из другой таблицы;

- одна запись второй таблицы связана с более чем одной записью первой таблицы.

В качестве примера обратимся к магазину оптовой торговли. Рассмотрим две группы объектов:

- список товаров, производимых предприятиями ________

- список товаров, заказанных потребителями.

Поставки товаров                                     Заказы потребителей


Между таблицами Поставки товаров и Заказы потребителей существует отношения «много-ко-многим», так как на каждый поставляемый товар может быть более одного заказа. Аналогично, каждый заказанный товар может производится более чем одним предприятием. Связь между полями устанавливается на основании значения Код товара.

Проектирование нормализованной базы данных

При проектировании баз данных необходимо решить вопрос о наиболее эффективной структуре данных. Основные цели, которые при этом преследуются:

- обеспечить быстрый доступ к данным в таблицам

- исключить ненужное повторение данных

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

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

Теория нормализации оперирует понятиями нормальных форм таблиц (от 1 до 5), причем каждая последующая нормализованная форма должна удовлетворять требованиям предыдущей формы и некоторым дополнительным условиям. (Мы рассмотрим 3 нормализованные формы).

В качестве примера рассмотрим информацию о продажах некоторых товаров.


Продажи

Код клиента

Фамилия

Имя

Отчество

Телефон

Факс

Индекс

Страна, Город, Адрес

предприятие

Руководитель

Кредит

Код товара

дата заказа

Заказано

Дата продажи

продано

Цена

Прим. к товару

Категория, Наименование товара

Данную таблицу можно рассматривать как однотабличную базу данных, но в ней есть множество недостатков:

- во всех заказах, сделанных одним и тем же предприятием, придется вводить информацию о покупке

- при изменении телефона или адреса покупателя эти координаты нужно выключить во всех заказах

- наличие новой информации снизит скорость выключения запросов и повысит вероятность ошибок

Поэтому, выполним нормализацию данных.

Первая нормальная форма таблицы

Таблица в первой нормальной форме должна удовлетворять следующим требованиям:

1. в таблице не должно быть повторение групп таблиц;

2. таблица не должна иметь повторных записей.

Поскольку покупатель может сделать несколько заказов, каждый из которых в свою очередь может содержать несколько товаров, нам необходимо две таблицы: Клиенты и Заказы. В качестве связывающего поля определим Код клиента, а отношение «один-ко-многим »

Клиенты                                         Заказы


Данными действиями мы ликвидировали повторяющиеся группы полей.

Для исключения повторяющихся записей необходимо:

1. в таблице Клиенты определить первичный индекс с ключевым полем Код клиента.

2. Первичный ключ содержит информацию, которая однозначно идентифицирует запись (не допускает повторений значений поля).

Для этого нужно выделить название поля Код клиента в окне Конструктора таблицы Клиенты и нажать кнопку _____  Ключевое поле и команду контекстное меню Ключевое поле.

В Таблице Заказы исключить повторяющиеся записи можно одним из следующих способов:

1. добавить в таблицу уникальное ключевое поле Код заказа

2. создать уникальный составной индекс, состоящий из полей Код клиента, Код товара и Дата заказа.

После этого данные таблицы находятся в первой нормальной форме.

Вторая нормальная форма

О таблице говорят, что она находится во второй нормальной форме, если:

1. она удовлетворяет условиям первой нормальной формы

2. любое неключевое поле однозначно идентифицируется полным набором ключевых полей.

Из приведенного выше определения следует, что понятие второй нормальной нормы применимо только к таблицам, имеющим составной индекс (Заказы). Данная таблица не является таблицей во второй нормальной форме, поскольку поля Категория, Наименование товара и Цена однозначно определяются только одним из ключевых полей – Код товара.

Поэтому, для приведения таблицы Заказы во вторую нормальную форму необходимо выделить из таблицы Заказы таблицу Товары, которую будет содержать информацию о товарах каждого типа. Для связывания таблиц Заказы и Товары используются поля Код товара.

                                   Клиенты                                          Заказы


           

Третья нормальная форма таблицы

О таблице говорят, что она находится в третьей нормальной форме если:

1. она удовлетворяет условиям второй нормальной формы

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

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

Так, в таблице Клиенты поле Руководитель однозначно определяется значением поля Предприятие. Поэтому, следует создать таблицу Предприятия:

Предприятия
Руководитель



           

а в таблице Клиенты хранить только название Предприятия.

Определение связей между таблицами

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

Для этого:

- вызвать команду Сервис/Схема данных или кнопку Схема данных из панели инструментов.

- добавить в окно связей окно Добавить таблицу (п.м. Связь/Добавить таблицу или кнопка Добавить таблицу).

Таблицы

Запросы

Табл. и заказы

Заказы

Клиенты

Предприятия

Товары

- в списке таблиц, последовательно выделяя таблицы, нажимать кнопку Добавить или выделить сразу все и Добавить.

Схема данных

- для связи полей выбрать поле первой таблицы (Код клиента) и переместить его мышье на соответствующее поле в первой таблице (Код клиента).

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

На экране откроется окно диалога «Связи».

Связи

                  Таблица/Запрос                             Связанная Таблица/Запрос

                        Клиенты                                                   Заказы

                    Код клиента                                           Код клиента

      Обеспечение целостности данных

      Каскадное обновление связей полей

      Каскадное удаление связей записей

Тип отношений: один-ко-многим

Тип создаваемой связи зависит от полей, которые были указаны при определении связи:

- отношение «один-ко-многим » - создается в том случае, когда только одно из полей является ключевым или имеет уникальный индекс

- отношение «один-к-одному » - создается в том случае, если оба связываемых поля является уникальными или ключевыми.

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

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

В окне диалога «схема данных» можно не только устанавливать связи между таблицами, но и выполнять следующие действия:

- изменять структуру таблицы

- изменять существующую связь

- удалять связь

- удалять таблицу из окна диалога «Схема данных»

- вывести на экран все существующие связи или связи только для конкретной таблицы.

- определить связи для запросов, не задавая условия целостности данных.

Связывание двух полей одной таблицы

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

Для связывания поля таблицы с другим полем той же таблицы нужно дважды добавить эту таблицу в окно диалога «Схема данных» и создать связь соединив ноля лишней связи.

Изменение структуры таблицы в окне Схема данных

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

Для удаления связи нужно ее выделить и нажать клавишу Delete. Для удаления таблицы из схемы данных нужно ее выделить и нажать Delete (только из одного окна, а не из базы данных).

Определение условий целостности данных

Условием целостности данных называют набор правил, используемых в Access для поддержания связей меду записями в связанных таблицах. Эти правила делают невозможным случайные удаления или изменения связанных данных.

Условия целостности данных выполняются при следующих условиях:

- связанное поле главной таблицы является ключевым полем;

- связанные поля имеют один тип данных;

- обе таблицы принадлежат одной базе данных.

- для определения целостности данных нужно в окне диалога Схема данных установить флажок «Обеспечение целостности данных».

Лекция "Команды ОС для компиляции" также может быть Вам полезна.

При этом, над под лишней соединяющей поля, появятся обозначения 1 ко ¥.

Данное условие делает доступным следующие два режима:

- каскадное обновление связанных полей

- каскадом удаление связанных полей.

Если данные режимы не установлены, то при удалении, например, записи из таблицы Клиенты будут появляться сообщения о невозможности выполнения данной операции в том случае, если в таблице Заказы есть заказы, относящиеся к данному покупателю.

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Нашёл ошибку?
Или хочешь предложить что-то улучшить на этой странице? Напиши об этом и получи бонус!
Бонус рассчитывается индивидуально в каждом случае и может быть в виде баллов или бесплатной услуги от студизбы.
Предложить исправление
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5140
Авторов
на СтудИзбе
441
Средний доход
с одного платного файла
Обучение Подробнее