п. 2.5.2 Связывание таблиц

Тема 2. 5 Реляционная база данных. Создание реляционной базы данных

П. 2.5.1 Однотабличные и многотабличные базы данных

Часто встречается ситуация, когда хранить всю базу данных в одной таблице неудобно и нерациональ­но. Таблица может содержать слишком большое количество полей, что неудобно пользователю. Различные записи при этом во многих полях дублируют друг друга, что увеличива­ет информационный объем базы данных и замедляет проце­дуры ее обработки.

Поясним это на примере.

Пусть табличная база данных «Комплектующие компьютера и поставщики» содержит ин­формацию о различных комплектующих и имеет поля: «Номер по порядку», «Наименование», «Описание», «Название фир­мы», «Адрес», «Цена» (в рублях) - таб. 1.

Таблица 1. «Комплектующие и поставщики»

№ п/п Наименование Описание Название фирмы Адрес Цена (руб.)
  Системный блок Pentium Такт Советская, 52  
  Системный блок Pentium Прагма Ульяновская,56  
  Системный блок Pentium Олвико Советская, 86  
  Монитор ЖК Такт Советская, 52  
  Монитор ЖК Прагма Ульяновская,56  
  Монитор ЖК Олвико Советская, 86  
  Клавиатура 104 кл. Такт Советская, 52  
  Клавиатура 104 кл Прагма Ульяновская,56  
  Клавиатура 104 кл Олвико Советская, 86  
  Мышь оптическая Такт Советская, 52  
  Мышь оптическая Прагма Ульяновская,56  
  Мышь оптическая Олвико Советская, 86  

Мы видим, что почти половину объема таблицы составля­ет избыточная, дублированная информация.

Проанализируем причину дублирования.

Комплектую­щие компьютера имеют два неотъемлемых свойства: «Наи­менование» и «Описание».

«Название фирмы», «Адрес» и «Цена» не являются свойствами комплектующих компьюте­ра, они являются свойствами поставщика.

Естественно разделить исходную таблицу на две: «Комп­лектующие» (таб. 2) и «Поставщики» (таб.3).

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

Таблица 2. «Комплектующие»

Код комплектующих Наименование Описание
СБ Системный блок Pentium
М Монитор ЖК
К Клавиатура 104 кл
мш Мышь оптическая

В таблицу «Поставщики» введем дополнительное поле «Код поставщика». Это поле будет ключевым в дан­ной таблице.

Таблица 3. «Поставщики»

Код поставщика Название фирмы Адрес
Т Такт Советская, 52
П Прагма Ульяновская,56
О Олвико Советская, 86

п. 2.5.2 Связывание таблиц

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

Существует три типа связей: «один – к одному», «один-ко-многим», «многие-ко-многим».

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

При связи «один-ко-многим» каждой записи в одной (главной) таблице могут соответствовать несколько записей в другой (подчиненной) таблице, а запись в подчиненной таблице не может иметь более одной соответствующей ей за­писи в главной таблице.

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

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

Две таблицы, находящиеся в отношении «многие-ко-мно­гим», могут быть связаны только с помощью третьей (свя­зующей) таблицы. Таблицы «Комплектующие» и «Постав­щики» можно связать в отношении «многие-ко-многим» путем создания двух связей «один-ко-многим» по отноше­нию к таблице «Цена».

Таблицы «Комплектующие» и «Поставщики» будут яв­ляться главными по отношению к таблице «Цена».

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

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

Таблица «Поставщики» также является главной по отно­шению к таблице «Цена». Ее поле «Код поставщика» явля­ется первичным ключом, соответственно в подчиненной таб­лице «Цена» должно существовать одноименное поле, которое является внешним ключом.

Таким образом, таблица «Цена» должна содержать следу­ющие поля (таб. 4):

    • «Счетчик» (ключевое поле);
    • «Код комплектующих» (поле внешнего ключа для табли­цы «Комплектующие»);
    • «Код поставщика» (поле внешнего ключа для таблицы «Поставщики»);
    • «Цена» (числовое поле).

Таблица 4. «Цена»

№ п/п Код комплектующих Код поставщика Цена
  СБ Т 9500 р.
  СБ П 10800 р.
  СБ О 10200 р.
  М Т 7200 р.
  М П 6800 р.
  М О 7500 р.
  К Т 300 р.
  К П 350 р.
  К О 400 р.
  м Т 280 р.
  м П 250 р.
  м О 180 р.

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

Определение. Базы данных, состоящие из связанных двумерных таблиц, называются реляционными.

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: