Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

План заняття. 1. Характеристика поняття зв’язана таблиця




1. Характеристика поняття зв’язана таблиця

2. Характеристика властивостей зв’язаних таблиць

 

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

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

Свойство MasterSource (тип TDataSource) содержит ссылку на источник данных, связанный с главной таблицей. Та­ким образом, это свойство служит для выбора главной таблицы и обеспечивает ее связь с используемой таблицей, которая выступа­ет в роли подчиненной.

Свойство MasterFields (тип String) задает список полей, в соответствии со значениями которых будет осуществляться связь между двумя таблицами. При вызове данного свойства через Инспектор объектов вызывается диалоговое окно Field Link De­signer, в пределах которого устанавливается связь между полями главной и подчиненной таблицы (см. рис. 14.5).

Как видно из рис. 14.5, в верхней части представленного диа­логового окна расположен разворачивающийся список Available Indexes, позволяющий выбрать необходимый индекс подчиненной таблицы, на основе которого будет формироваться связь с главной таблицей. Ниже в диалоговом окне расположены два списка: сле­ва - поля, входящие в выбранный индекс подчиненной таблицы Detail Fields; справа - поля главной таблицы Master Fields. Проек­тировщик приложения выбирает одно поле в левом списке и одно в правом, а затем нажимает кнопку Add, размещенную в центре окна. Результат, отражающий связь между полями двух таблиц, помещается в список Joined Fields, расположенный в нижней час­ти диалогового окна.

Результатом установления такой связи будет отображение в подчиненной таблице только тех полей, значения которых совпа­дают со значением связанного поля текущей записи главной табли­цы. Например, если связь между двумя таблицами установлена по полям, содержащим фамилию, имя и отчество студентов (Name -для главной таблицы, Fio - для подчиненной таблицы), и при этом поле Name текущей записи главной таблицы в настоящий момент времени содержит значение «Васильев В.А.», то в подчиненной таблице будут отображаться только те записи, у которых поле Fio имеет значение «Васильев В.А.».

Подобным образом путем поочередного связывания двух таб­лиц может устанавливаться одновременная связь между тремя и

более таблицами.

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

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

Поясним на примере, о чем идет речь. Допустим, в магазине имеется БД, в которую входят три таблицы, хранящие информа­цию о продаже товаров. В первой таблице Prodaga.db содер­жится подробная информация по каждой продаже, такая, как дата продажи, количество проданных единиц товара, номер накладной и т.п. Вторая таблица Tovars. db содержит сведения о продаже каждого товара за некоторый период времени, например за теку­щий год. В третьей таблице Clients. db хранится информация о продаже товаров каждому покупателю за тот же период времени.

Транзакция, связанная с продажей того или иного товара, бу­дет состоять из такого набора операций:

1) добавление записи в таблицу Prodaga. db;

2)поиск (или добавление) в таблице Tovars. db записи, со­ответствующей проданному товару, и увеличение общего объема продаж товара данного вида;

3)поиск (добавление) в таблице Clients. db записи, отно­сящейся к сделавшему покупку покупателю и увеличение общей суммы совершенных им покупок.

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

Для реализации механизма транзакций необходимо.воспользо-ваться следующими методами компонента Database.

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

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

изменений.

Метод Rollback при возникновении исключительных ситуа­ций производит отмену данной транзакции и действий всех опе­раций в ее рамках (откат транзакции).

В самом общем виде программная реализация механизма тран­закции будет выглядеть следующим образом:

// Начало транзакции Databasel.StartTransaction; try

{Составляющие транзакцию операции по изменению таблиц БД}

// Операции выполнены успешно.

// Утверждение транзакции

Databasel. Commit;

except

// Возникла исключительная ситуация.

// Откат транзакции

Databasel.Rollback;

end;

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

Контрольні питання

1. Надати характеристику поняття зв’язана таблиця

2. Розглянути властивості зв’язаних таблиць

АУДИТОРНЕ ЗАНЯТТЯ

ЗМІСТОВИЙ МОДУЛЬ 6: ПРОГРАМУВАННЯ З ГРАФАМИ. ВІЗУАЛЬНІ КОМПОНЕНТИ. БАЗИ ДАНИХ

ТЕМА 6.7: НАВІГАЦІЯ ПО НАБОРУ ДАНИХ. МОВА SQL. СТВОРЕННЯ ДОВІДКОВОЇ СИСТЕМИ

Лекція №58 – Робота з таблицями та індексами




Поделиться с друзьями:


Дата добавления: 2014-12-25; Просмотров: 310; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.017 сек.