MS Access - Связанные данные
В этой главе мы поймем основы связывания данных. Прежде чем говорить и создавать взаимосвязи между различными данными, давайте рассмотрим, зачем нам это нужно. Все возвращается к нормализации.
Нормализация
Нормализация базы данных или просто нормализация - это процесс организации столбцов (атрибутов) и таблиц (отношений) реляционной базы данных для минимизации избыточности данных. Это процесс разделения данных на несколько таблиц для повышения общей производительности, целостности и долговечности.
Нормализация - это процесс организации данных в базе данных.
Это включает создание таблиц и установление отношений между этими таблицами в соответствии с правилами, разработанными как для защиты данных, так и для повышения гибкости базы данных за счет устранения избыточности и несогласованных зависимостей.
Давайте теперь посмотрим на следующую таблицу, которая содержит данные, но проблема в том, что эти данные довольно избыточны, что увеличивает вероятность опечатки и непоследовательной формулировки при вводе данных.
CustID | имя | Адрес | Cookie-файлы | Количество | Цена | Всего |
---|---|---|---|---|---|---|
1 | Этель Смит | 12 Main St, Арлингтон, VA 22201 S | Шоколадная плитка | 5 | 2 доллара США | 10,00 долларов США |
2 | Том Уилбер | 1234 Дуб Доктор, Пекин, IL 61555 | Чок Чип | 3 | 2 доллара США | 6,00 долл. США |
3 | Этил Смити | 12 Main St., Арлингтон, VA 22201 | Шоколадная плитка | 5 | 2 доллара США | 10,00 долларов США |
Чтобы решить эту проблему, нам нужно реструктурировать наши данные и разбить их на несколько таблиц, чтобы устранить часть этой избыточности, как показано в следующих трех таблицах.
Здесь у нас есть одна таблица для клиентов, вторая - для заказов, а третья - для файлов cookie.
Проблема здесь в том, что простое разделение данных на несколько таблиц не поможет определить, как данные из одной таблицы связаны с данными в другой таблице. Чтобы связать данные в нескольких таблицах, мы должны добавить внешние ключи вOrders стол.
Определение отношений
Связь работает путем сопоставления данных в ключевых столбцах, обычно столбцах с одинаковыми именами в обеих таблицах. В большинстве случаев связь совпадает с первичным ключом из одной таблицы, который предоставляет уникальный идентификатор для каждой строки, с записью внешнего ключа в другой таблице. Между таблицами существует три типа отношений. Тип создаваемой связи зависит от того, как определены связанные столбцы.
Давайте теперь рассмотрим три типа отношений:
Отношения один-ко-многим
Отношения "один ко многим" - наиболее распространенный тип отношений. В этом типе отношений строка в таблице A может иметь много совпадающих строк в таблице B, но строка в таблице B может иметь только одну совпадающую строку в таблице A.
Например, таблицы «Клиенты» и «Заказы» имеют отношение «один ко многим»: каждый клиент может разместить множество заказов, но каждый заказ поступает только от одного клиента.
Отношения "многие ко многим"
В отношении «многие ко многим» строка в таблице A может иметь много совпадающих строк в таблице B, и наоборот.
Вы создаете такие отношения, определяя третью таблицу, называемую junction table, первичный ключ которого состоит из внешних ключей из таблицы A и таблицы B.
Например, таблица «Клиенты» и таблица «Cookies» имеют отношение «многие ко многим», которое определяется отношением «один ко многим» из каждой из этих таблиц и таблицы «Заказы».
Индивидуальные отношения
При взаимно-однозначном отношении строка в таблице A может иметь не более одной совпадающей строки в таблице B, и наоборот. Отношение «один к одному» создается, если оба связанных столбца являются первичными ключами или имеют уникальные ограничения.
Этот тип отношений встречается не часто, потому что большая часть информации, связанной таким образом, будет находиться в одной таблице. Вы можете использовать отношения один к одному, чтобы -
- Разделите таблицу на множество столбцов.
- Изолируйте часть стола по соображениям безопасности.
- Храните данные, которые недолговечны и могут быть легко удалены, просто удалив таблицу.
- Храните информацию, которая применяется только к подмножеству основной таблицы.