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