Ведуще-детализированная база данных является простейшей формой взаимосвязанной базы данных - означающей, что отдельные таблицы имеют логическую взаимосвязь друг с другом, основываясь на значениях их общих полей. В данном случае AUTHORS.DB и ARTICLES.DB имеют общее поле: AUTHOR ID. Имея номер автора, мы можем просмотреть и отобразить все входы ARTICLES.DB, которые были написаны автором. Фактически, не совсем правильно говорить, что мы должны выплнить просмотр. Код поддержки баз данных Delphi делает это для нас, за кулисами, без единой строчки Object Pascal, говорящей ему, что делать.

Взаимосвязи одного со многими

Две таблицы обладают тем, что называется взаимосвязью одного со многими. Это означает, что для каждого автора в AUTHORS. DB может иметься много заметок в ARTIC-LES.DB. Обратное не является справедливым; каждая заметка имеет только одного автора.

Взаимосвязь одного со многими является очень распространенной. Даже нечто столь же простое, как база данных имя/адрес обладает взаимосвязью одного со многими. Учтите, что одно лицо может обладать более чем одним адресом: домашним адресом, рабочим адресом и, возможно, адресом летнего дома; или, что одно лицо может в наши дни иметь несколько телефонных номеров. (Голосовым, факсом, мобильным, с быть может "тинэйджерской" линией или отдельной линией для данных...) Таким образом, вы должны были бы выделить отдельную запись в отдельной адресной таблице для каждого адреса, и дать каждой адресной записи поле NAME ID, содержащее ID номер лица, "владеющего" этим адресом.

Способом разобраться в подобных взаимосвязях является спросить себя: Если имеется любой набор пунктов данных, какие пункты являются перечисляемыми отдельно?Т.с, когда я перечисляю имена, перечисляю ли я также и адреса? Или число адресов полностью или по большей части независимо от числа имён? В основном, каждый независимо перечисляемый пункт данных должен храниться в своей собственной таблице, и быть связан с остальными таблицами посредством "ID" значений в общих полях.

Мы так и поступаем здесь Каждая запись об авторе имеет поле AUTHOR ID, и каждая заметка также имеет поле AUTHOR ID, содержащее ID код автора, написавшего эту заметку. Взаимосвязь между таблицей AUTHORS.DB и таблицей ARTICLES.DB устанавливается посредством этого общего поля.

Если вы создаете базу данных имен и адресов, каждая запись имени должна иметь уникальное поле NAME ID. (Не используйте просто комбинацию first+last name (пер-вое+последнее имя); в мире существуют тысячи Майков Смитов, и я знаю нескольких из них!) Каждая адресная запись в таблице ADDRESS.DB также должна обладать полем NAME ID, содержащим значение ID лица, чей адрес она содержит.

Отображение заметок авторов

В качестве примера ведуще-детализированной базы данных мы собираемся расширить программу Authors таким образом, чтобы она отображала все входы авторских заметок в DBGrid когда бы не отображался автор. И мы собираемся сделать это без написания какого-либо кода. Законченное приложение показано на Рисунке 13.7.


⇐ Предыдущая страница| |Следующая страница ⇒

Программирование в среде Delphi



Новости за месяц

  • Декабрь
    2021
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31