Многотабличные БД. Связывание таблиц Учебная презентация 6 раздела « Хранение, отбор и сортировка информации в базах данных »
Многотабличные БД Достаточно часто встречается ситуация, когда хранить все данные в одной таблице реляционной БД неудобно и нерационально. Таблица может содержать слишком большое количество полей. При этом во многих полях могут дублироваться данные, что увеличивает необходимое для хранения место и замедляет процедуры обработки данных. Поясним это на примере. Пусть реляционная база данных « Комплектующие компьютера и поставщики » содержит информацию о различных комплектующих и имеет поля : Счетчик, Наименование, Описание, Название фирмы, Адрес, Цена ( табл. 1). табл. 1 Ремизов Илья Вячеславович, 20132
Многотабличные БД (табл.1 Комплектующие ПК и поставщики) Счетчик Наим - ние ОписаниеНазвание фирмы Адрес Цена, руб. 1 Системный блок Intel Core 2 Quad Фирма 1 Адрес Системный блок Intel Core 2 Quad Фирма 2 Адрес Монитор 19 Фирма 1 Адрес Монитор 19 Фирма 2 Адрес Клавиатура 104 кл. Фирма 1 Адрес Клавиатура 104 кл. Фирма 2 Адрес МышьБеспроводная Фирма 1 Адрес МышьБеспроводная Фирма 2 Адрес 2350 Ремизов Илья Вячеславович, 20133
Многотабличные БД Данные записей 1 и 2, 3 и 4, 5 и 6, 7 и 8 дублируются в полях Наименование, Описание, Название фирмы и Адрес. Таким образом, почти половину объема таблицы составляет избыточная, дублированная информация. Проанализируем причину дублирования. Комплектующие компьютера имеют два неотъемлемых свойства : Наименование и Описание. Название фирмы. Адрес и Цена не являются свойствами комплектующих компьютера, они являются свойствами поставщика. Ремизов Илья Вячеславович, 20134
Многотабличные БД Естественно выделить из исходной таблицы две отдельные таблицы : « Комплектующие » и « Поставщики ». Чтобы однозначно идентифицировать записи в этих таблицах, введем в них первичные ключи. В таблицу « Комплектующие » введем поле Код комплектующих ( табл. 2). табл. 2 Ремизов Илья Вячеславович, 20135
Многотабличные БД (табл. 2 Комплектующие) Код комплектующих НаименованиеОписание К1К1 Системный блок Intel Core 2 Quad К2К2 Монитор 19 К3К3 Клавиатура 104 кл. К4К4 МышьБеспроводная Ремизов Илья Вячеславович, 20136
Многотабличные БД В таблицу « Поставщики » введем поле Код поставщика ( табл. 3 Поставщики ). Код поставщика Название фирмы Адрес П1П1 Фирма 1 Адрес 1 П2П2 Фирма 2 Адрес 2 Ремизов Илья Вячеславович, 20137
Связывание таблиц После создания множества таблиц, содержащих данные, относящиеся к разным аспектам базы данных, необходимо обеспечить целостность базы данных. Для этого необходимо связать таблицы между собой. При связи в отношении « один - ко - многим » каждой записи в одной ( главной ) таблице могут соответствовать несколько записей в другой ( подчиненной ) таблице, а запись в подчиненной таблице не может иметь более одной соответствующей ей записи в главной таблице. Ремизов Илья Вячеславович, 20138
Связывание таблиц Если одной записи в первой таблице могут соответствовать несколько записей во второй таблице, а одной записи во второй таблице несколько записей в первой таблице, то реализуется связь в отношении « многие - ко - многим ». В нашем случае реализуется именно такая связь. Одной записи в таблице « Комплектующие » соответствуют две записи в таблице « Поставщики », так как устройства одного вида продаются двумя фирмами. Одной же записи таблицы « Поставщики » соответствуют четыре записи таблицы « Комплектующие », так как одна фирма продает устройства четырех разных видов. Ремизов Илья Вячеславович, 20139
Связывание таблиц Две таблицы, находящиеся в отношении « многие - ко - многим », могут быть связаны только с помощью третьей ( связующей ) таблицы. Таблицы « Комплектующие » и « Поставщики » можно связать в отношении « многие - ко - многим » путем создания двух связей с отношением « один - ко - многим » для таблицы « Цена ». Таблицы « Комплектующие » и « Поставщики » будут главными по отношению к таблице « Цена ». Связь между таблицами устанавливает отношения между совпадающими значениями в полях с одинаковыми именами. С первичным ключом главной таблицы связывается одноименное поле подчиненной таблицы ( внешний ключ ). Ремизов Илья Вячеславович,
Связывание таблиц В главной таблице « Комплектующие » поле Код комплектующих является первичным ключом, соответственно в подчиненной таблице « Цена » должно существовать одноименное поле, которое является внешним ключом. таблице « Комплектующие » Таблица « Поставщики »Таблица « Поставщики » также является главной по отношению к таблице « Цена ». Ее поле Код поставщика является первичным ключом, соответственно в подчиненной таблице « Цена » должно существовать одноименное поле, которое является внешним ключом. Ремизов Илья Вячеславович,
Связывание таблиц Таким образом, таблица « Цена » должна содержать следующие поля ( табл. 4): табл. 4 Счетчик ( первичный ключ ); Код комплектующих ( поле внешнего ключа для таблицы « Комплектующие »); таблицы « Комплектующие » Код поставщика ( поле внешнего ключа для таблицы « Поставщики »); таблицы « Поставщики » Цена ( числовое поле ). Ремизов Илья Вячеславович,
Связывание таблиц (табл. 4 Цена) СчетчикКод комплектую щих Код поставщика Цена, руб. 1 К1К1 П1П К1К1 П2П К2К2 П1П К2К2 П2П К3К3 П1П К3К3 П2П К4К4 П1П1 8 К4К4 П2П2350 Ремизов Илья Вячеславович,
Связывание таблиц Межтабличная связь обеспечивает целостность данных. Связанные таблицы представляют собой единую базу данных, в которой можно создавать новые таблицы, а также запросы и отчеты, содержащие данные из связанных таблиц. Прежде чем приступить к созданию многотабличной базы данных, необходимо продумать ее проект. Проект представляет собой модель будущей базы данных, состоящей из объектов и их связей, необходимых для выполнения поставленных задач. Процесс проектирования включает, прежде всего, определение перечня необходимых таблиц и задание их структуры, а также установки типа связей между этими таблицами. Ремизов Илья Вячеславович,