![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
вопрос о связывании таблиц [D7, FB1.5.1]
Гость22 © (2005-09-21 10:20:00)Раньше я работал с локальной БД (Парадокс) и необходимости связывать таблицы не было. Теперь вот хочу пробывать это сделать, но пока не знаю как. Что вообще такое связывание таблиц и зачем оно нужно. Может это когда выбираются данные из одной таблицы, то данные из другой
подтягиваются "по связке"?
Может есть ссылка на ресурс об этом, где попроще и подробно все описано?
Digitman (2005-09-21 17:06:00) [1]
> msguns © (21.09.05 14:36) [8]
Сергей, ты это все кому сейчас произнес-то ?) с учетом [7] и Гостя22-го как такового ?)
msguns (2005-09-21 14:36:00) [2]"Связывание" в отношении таблиц может иметь массу вариантов (интерпретаций), часть из которых "вложена" в бизнес-логику, а часть - нет.
Вот некоторые из них:
1. Связь "Мастер-детал", когда есть Главная таблица и Детальная, в которой одно из полей содержит ссылки на ключ (идентификатор) Главной. Если эту связь заложить в бизнес-логику (foregn key), то получим автоконтроль целостности, при которой невозможно удалить запись из Главной таблицы, если есть хоть одна запись в Подчиненной, ссылающаяся на нее.
2. Связь "Справочник", когда некоторая таблица имеет поле, содержащее указатель на другую таблицу. Такая связь используется для экономии памяти на диске и ускорения выборок и в общем случае называется нормализацией. Также может быть реализована через Foregn key. На клиенте часто реализуется через обїекты типа DBLookUpCombobox
3. Связь семантическая, когда выбираются записи по совокупности полей нескольких таблиц по некоторым условиям, анализирующим соотношения этих полей между собой. Чаще всего такая связь закладывается на уровне запросов на сервере (ХП, представления) или клиенте (TXXQuery, TXXDataSet,..).
4. Связь расчетная, когда при изменении количественно-суммовых атрибутов некоторого объекта (таблицы) надо автоматически менять атрибуты другого объекта (таблицы). Типичный пример: в учетно складских приложениях при изменении кол-ва (суммы) в фактуре приходно-расходного документа надо менять текущий остаток на карточке (таблица-картотека).
Опять же можно это делать на клиенте (но изменения в обеих таблицах должны быть строго в контексте одной транзакции), либо реализовать на сервере, например, через механизм триггеров (бизнес-логика).
Таком образом обеспечивается достоверностьБД
Val (2005-09-21 12:41:00) [3]Коллеги, вода в ступе, не о чем спорить. Он мог иметь ввиду под связкой, как внешние ключи, так и связывание в запросах. Думаю, он сам не знает о чем - нет понятия о рилейшеншип в БД, а это в букваре, а не на форуме.
Sergey13 (2005-09-21 12:39:00) [4]2[5] Digitman © (21.09.05 12:35)
а без второго первое не работает. 8-)
Digitman (2005-09-21 12:35:00) [5]
> Sergey13 © (21.09.05 12:24) [4]
первое важней
Sergey13 (2005-09-21 12:24:00) [6]2[3] Digitman © (21.09.05 12:15)
Принципы то одни - реализации их разные.
Digitman (2005-09-21 12:15:00) [7]
> я работал с локальной БД (Парадокс) и необходимости связывать
> таблицы не было
Локальность или НЕлокальность БД (неважно, Парадокс или Хренодокс) никак не связана с необходимостью или отсутствием оной что-то и где-то там "связывать" - принципы организации/использования реляционных БД едины.
Rule (2005-09-21 11:06:00) [8]любая книга по делфи содержит такую информацию ...
Плохиш (2005-09-21 10:51:00) [9]
> то данные из другой подтягиваются "по связке"?
да
> Может есть ссылка на ресурс об этом, где попрощеи подробно
> все описано?
встроенная справка делфи