Связи между таблицами в access. ИНФОФИЗ – мой мир…

ИНФОФИЗ – мой мир…

Лабораторная работа № 24

Тема: Создание связей в базе данных.

Цель работы: исследование приемов установки связей меж таблицами базы данных.

Оборудование: ПК, Windows XP Professional, MS Access 2007.

Ход работы

1 В соответствие с заданием сделать и заполнить таблицы БД “Фирма”, установить связи меж ними.

2 Показать на компе заполненные таблицы, схему данных.

3 Ответить на контрольные вопросы.

4 Сделать вывод о проделанной работе.

Порядок выполнения:

1. Запустите Microsoft Access.

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

Для этого запустите Access, сделайте новую базу данных, задайте имя базы данных Фирма, выберите место сохранения Вашей базы данных (диск Х:) и нажмите клавишу Создать. (подробный порядок действий описан в лабораторной работе № 23)

3. Создайте в режиме Конструктор  3 таблицы: Сотрудники, Клиенты и Заказы. Ежели все сведения поместить в одной таблице, то она станет чрезвычайно неловкой для работы. В ней начнутся повторы данных. Всякий раз, когда сотрудник Иванов будет работать с какой-нибудь компанией, придется прописывать данные о сотруднике и клиенте поновой, в итоге что можно допустить множество ошибок. Чтоб уменьшить число ошибок, можно начальную таблицу разбить на несколько таблиц и установить связи меж ними. Это будет наиболее рационально.

Таблица Сотрудники

Таблица Клиенты

Таблица Заказы

4. Установите главные поля.

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

Ключ состоит из 1-го либо пары полей, значения которых однозначно определяют каждую запись в таблице. Более пригодным в качестве главного поля является Счетчик, так как значения в данном поле являются неповторимыми (т. е. исключают повторы).

При разработке таблиц в режиме конструктора ключевое поле устанавливается автоматом. Откройте сделанные Вами таблицы в режиме Конструктор и проверьте установленные главные поля:

1) в таблице Сотрудники ключевое поле Код сотрудника

2) в таблице Клиенты ключевое поле Код клиента

3) в таблице Заказы ключевое поле Код заказа

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

5.Создайте раскрывающиеся списки с помощью Мастера подстановок

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

Откройте таблицу Заказы в режиме Конструктора. Для поля Код клиента выберите тип данныхМастер подстановок.

В появившемся окне выберите команду Объект “столбец подстановки” будет употреблять значения из таблицы либо запроса и щелкните на кнопочке Далее.

В перечне таблиц выберите таблицу Клиенты и щелкните на кнопочке Далее.

В перечне Доступные поля выберите поле Код клиента и щелкните на кнопочке со стрелкой >>, чтоб ввести поле в перечень Выбранные поля. Таковым же образом добавьте поле Название компании и щелкните на кнопочке Далее.

Выберите порядок сортировки перечня по полю Название компании и нажмите кнопку Далее.

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

На крайнем шаге Мастера подстановок замените при необходимости надпись для поля подстановок и щелкните на кнопочке Готово.

Читайте также  Включается и отключается монитор. Монитор включается на 2 секунды и гаснет: что делать?

Сохраните приобретенный результат.

6.Аналогичным образом сделайте раскрывающийся перечень для поля Код сотрудника.

Теперь в перечне таблиц выберите таблицу Сотрудники

В перечне Доступные поля выберите поля Код сотрудника, Фамилия, Имя.

Порядок сортировки перечня выберите по полю Фамилия.

Все другие деяния проводятся аналогично пт 6.

7. Создайте связей меж таблицами.

Существует несколько типов отношений меж таблицами:

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

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

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

Закройте все открытые таблицы, так как создавать либо изменять связи меж открытыми таблицами нельзя.

Выполните команду вкладки Лента Работа с базами данных клавиша Схема данных

 

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

Если связи меж таблицами уже были заданы, то раскроется окно Схема данных, на котором будут отображены таблицы и связи меж ними.

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

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

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

Аналогично измените связь меж таблицами Клиенты и Заказы.

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

На схеме данных связи показываются в виде соединительных линий со особыми значками около таблиц. Связь «один-к-многим» помечается «1» поблизости глав­ной таблицы (имеющей первичный ключ) и «∞» поблизости подчиненной таблицы (имеющей наружный ключ). Связь «один-к-одному» помечается 2-мя «1» (оба поля таблиц имеют первичные ключи). Неопределенная связь не имеет никаких символов. Ежели установлено объединение, то его направление отмечается стрелкой на конце соединительной полосы (ни одно из объединенных полей не является главным и не имеет неповторимого индекса).

7. В таблицу Сотрудники внесите данные о 7 работниках.

8. В таблицу Клиенты внесите данные о 7 предприятиях, с которыми работает данная фирма.

9. В таблице Заказы оформите 5 заявок, поступивших на фирму.

10. Покажите работу преподавателю.

11. Ответьте на контрольные вопросы.

Контрольные вопросы:

1 С помощью чего же можно создавать таблицы?

2 Что такое ключевое поле?

3 Как установить несколько главных полей?

4 Как установить связи меж таблицами?

5 Какие есть дела меж таблицами?

6 Что означают на схеме данных «1» и «∞»?

7 Для чего нужен Мастер подстановок?

8 Для чего же нужен механизм запросов?

 Методические указания к лабораторной работе № 24 Создание связей в базе данных

Подробности
Просмотров: 16454

Связи меж таблицами базы данных

Bob_112 февраля 2020 в 15:13

1. Введение

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

1.1. Для кого эта статья?

Эта статья будет полезна тем, кто желает разобраться со связями меж таблицами базы данных. В ней я постарался поведать на понятном языке, что это такое. Для лучшего осознания темы, я чередую теоретический материал с практическими примерами, представленными в виде диаграммы и запроса, создающего нужные нам таблицы. Я использую СУБД Microsoft SQL Server и запросы пишу на T-SQL. Написанный мною код должен работать и на остальных СУБД, так как запросы являются всепригодными и не употребляют специфичных конструкций языка T-SQL.

Читайте также  Расширение оперативной памяти. Инструкция: Как увеличить оперативную память на компьютере

1.2. Как вы сможете применить эти знания?

  1. Процесс сотворения баз данных станет для вас легче и понятнее.
  2. Осознание связей меж таблицами поможет для вас легче освоить нормализацию, что является чрезвычайно принципиальным при проектировании базы данных.
  3. Разобраться с чужой базой данных будет существенно проще.
  4. На собеседовании это будет чрезвычайно неплохим плюсом.

2. Благодарности

Учтены были советы и критика создателей jobgemws, unfilled, firnind, Hamaruba.
Спасибо!

3.1. Как организовываются связи?

Связи создаются с помощью наружных ключей (foreign key).
Наружный ключ — это атрибут либо набор атрибутов, которые ссылаются на primary key либо unique иной таблицы. Иными словами, это что-то вроде указателя на строчку иной таблицы.

3.2. Виды связей

Связи делятся на:

  1. Многие ко многим.
  2. Один ко многим.
    • с неотклонимой связью;
    • с необязательной связью;
  3. Один к одному.
    • с неотклонимой связью;
    • с необязательной связью;

Разглядим тщательно каждый из них.

4. Почти все ко многим

Представим, что нам необходимо написать БД, которая будет хранить работником IT-компании. При этом существует некоторый обычный набор должностей. При этом:

  • Работник может иметь одну и наиболее должностей. К примеру, некоторый работник может быть и администратором, и программистом.
  • Должность может «владеть» одним и наиболее работников. К примеру, администраторами является определенный набор работников. Иными словами, к администраторам относятся некоторые работники.

Работников представляет таблица «Employee» (id, имя, возраст), должности представляет таблица «Position» (id и заглавие должности). Как видно, обе эти таблицы соединены меж собой по правилу почти все ко многим: каждому работнику соответствует одна и больше должностей (многие должности), каждой должности соответствует один и больше работников (многие работники).

4.1. Как выстроить такие таблицы?

Мы уже имеем две таблицы, описывающие работника и профессию. Сейчас нам необходимо установить меж ними связь почти все ко почти всем. Для реализации таковой связи нам нужен некоторый посредник меж таблицами «Employee» и «Position». В нашем случае это будет некоторая таблица «EmployeesPositions» (работники и должности). Эта таблица-посредник связывает меж собой работника и должность последующим образом:
Слева указаны работники (их id), справа — должности (их id). Работники и должности на данной нам таблице указываются с помощью id’шников.

На эту таблицу можно поглядеть с 2-ух сторон:

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

4.2. Реализация

Диаграмма

Код на T-SQL

Объяснения

С помощью ограничения foreign key мы можем ссылаться на primary key либо unique иной таблицы. В этом примере мы

  • ссылаемся атрибутом PositionId таблицы EmployeesPositions на атрибут PositionId таблицы Position;
  • атрибутом EmployeeId таблицы EmployeesPositions — на атрибут EmployeeId таблицы Employee;

4.3. Вывод

Для реализации связи почти все ко почти всем нам нужен некоторый посредник меж 2-мя рассматриваемыми таблицами. Он должен хранить два наружных ключа, 1-ый из которых ссылается на первую таблицу, а 2-ой — на вторую.

5. Один ко многим

Эта самая всераспространенная связь меж базами данных. Мы рассматриваем ее опосля связи почти все ко почти всем для сравнения.

Представим, нам необходимо воплотить некоторую БД, которая ведет учет данных о юзерах. У юзера есть: имя, фамилия, возраст, номера телефонов. При этом у каждого юзера может быть от 1-го и больше номеров телефонов (многие номера телефонов).

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

Читайте также  Как записать образ виндовс на диск. Как записать Виндовс 7 на диск

Иными словами, телефон принадлежит лишь одному юзеру. А юзеру могут принадлежать 1 и наиболее телефонов (многие).

Как мы лицезреем, это отношение один ко многим.

5.1. Как выстроить такие таблицы?

Юзеров будет представлять некоторая таблица «Person» (id, имя, фамилия, возраст), номера телефонов будет представлять таблица «Phone». Она будет смотреться так:
Данная таблица представляет три номера телефона. При этом номера телефона с id 1 и 2 принадлежат юзеру с id 5. А вот номер с id 3 принадлежит юзеру с id 17.
Заметка. Ежели бы у таблицы «Phones» было бы больше атрибутов, то мы смело бы их добавляли в эту таблицу.

5.2. Почему мы не делаем здесь таблицу-посредника?

Таблица-посредник нужна лишь в том случае, ежели мы имеем связь многие-ко-многим. По той обычной причине, что мы можем разглядывать ее с 2-ух сторон. Как, к примеру, таблицу EmployeesPositions ранее:

  1. Каждому работнику принадлежат несколько должностей (многие).
  2. Каждой должности принадлежит несколько работников (многие).

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

5.3. Реализация

Диаграмма

Код на T-SQL

Объяснения

Наша таблица Phone хранит всего один наружный ключ. Он ссылается на некоторого юзера (на строчку из таблицы Person). Таковым образом, мы как бы говорим: «этот юзер является обладателем данного телефона». Иными словами, телефон знает id собственного владельца.

6. Один к одному

Представим, что на работе для вас дали задание написать БД для учета всех работников для HR. Начальник убеждал, что компании необходимо знать лишь о имени, возрасте и телефоне работника. Вы разработали такую БД и расположили в нее всю 1000 работников компании. И здесь начальник говорит, что им для чего-то необходимо знать о том, является ли работник инвалидом либо нет. Более обычное, что приходит в голову — это добавить новейший столбец типа bool в вашу таблицу. Но это очень долго вчеркивать 1000 значений и ведь true вы будете вчеркивать намного пореже, чем false (2% будут true, например).

Наиболее обычным решением будет сделать новейшую таблицу, назовем ее «DisabledEmployee». Она будет смотреться так:
Но это еще не связь один к одному. Дело в том, что в такую таблицу работник может быть вписан наиболее 1-го раза, соответственно, мы получили отношение один ко многим: работник может быть несколько раз инвалидом. Необходимо сделать так, чтоб работник мог быть вписан в таблицу лишь один раз, соответственно, мог быть инвалидом лишь один раз. Для этого нам необходимо указать, что столбец EmployeeId может хранить лишь неповторимые значения. Нам необходимо просто наложить на столбец EmloyeeId ограничение unique. Это ограничение докладывает, что атрибут может принимать только неповторимые значения.

Выполнив это мы получили связь один к одному.

Заметка. Обратите внимание на то, что мы могли также наложить на атрибут EmloyeeId ограничение primary key. Оно различается от ограничения unique только тем, что не может принимать значения null.

6.1. Вывод

Можно огласить, что отношение один к одному — это разделение одной и той же таблицы на две.

6.2. Реализация

Диаграмма

Код на T-SQL

Объяснения

Таблица DisabledEmployee имеет атрибут EmployeeId, что является наружным ключом. Он ссылается на атрибут EmployeeId таблицы Employee. Не считая того, этот атрибут имеет ограничение unique, что говорит о том, что в него могут быть записаны лишь неповторимые значения. Соответственно, работник может быть записан в эту таблицу не наиболее 1-го раза.

7. Неотклонимые и необязательные связи

Связи можно поделить на неотклонимые и необязательные.

7.1. Один ко многим

  1. Один ко почти всем с неотклонимой связью:
    К одному полку относятся почти все бойцы. Один боец относится лишь к одному полку. Обратите внимание, что хоть какой боец непременно принадлежит к одному полку, а полк не может существовать без солдат.
  2. Один ко почти всем с необязательной связью:
    На планетке Земля живут все люди. Каждый человек живет лишь на Земле. При этом планетка может существовать и без населения земли.

Оставьте комментарий

Adblock
detector