Как правильно работать с Primary Key и Foregrin Key

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
Дмитрий Б.
Сообщения: 56
Зарегистрирован: 05 дек 2007, 18:09

Как правильно работать с Primary Key и Foregrin Key

Сообщение Дмитрий Б. » 04 май 2012, 11:41

Здраствуйте.

Просмотрел статьи на ibase.ru Для новичков, но не нашел там нужной информации :?
Подскажите пожалуйста.

1) Как в С++ Builder правильно организовать работу с первичными и вторичными ключами, а именно, чтобы в соответствующих полях DB_GRID-a отображалось значение подставляемого поля, а не его идентификатор.

Например есть две таблицы:

TB_1 (таблица справочник)

Код: Выделить всё

ID_NOM (Первичный ключ) (автоинкремент - тригер + генератор) 
NUMBER_TOVARA (uniq key)
NAME_TOVARA
DESCRIPTION
TB_2 (таблица - например заказы)

Код: Выделить всё

ID_ZAK (Первичный ключ) (автоинкремент - тригер + генератор) 
NUMBER_ZAKAZ
ID_NOM (Вторичный ключ)
COUNT
SUMMA
2) Подскажите пожалуйста, как при такой связи таблиц правильно делать запрос на выборку, вставку, изменения и удаление данных?

3) Как правильно будет получать сводную информацию по данным, если они находятся в разных таблицах? Создавать временную таблицу и посредством запросов копировать в нее данные из других таблиц или есть уже изобретенный велосипед, который предназначен для подобных действий.
Это требуется для того, чтобы пользователь выдел состояние например по определенному номеру товара видел (из_справочника_номенклатуры - наименование, описание, ...), (из_таблицы_цены - цену), (из_таблицы_остатки - остаток на складах), (из_таблицы_заказы - уже заказаное количество) и т.д.

Никак не могу понять, как это осуществляется в InterBase (после Access-а).
Также не понятно каким образом осуществляется поддержка ссылочной целостности данных, и связи один-один, один-многим ...

Просветите пожалуйста и по возможности дайте ссылку на хорошую книгу где это подробно расписано (касательно InterBase).

Спасибо большое.

С Уважением, Дмитрий.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Re: Как правильно работать с Primary Key и Foregrin Key

Сообщение kdv » 04 май 2012, 12:43

явных статей на эту тему на сайте нет, потому что эта тема (мастер-деталь) описана во всех книжках по C++Builder и Delphi.
В частности связь МД через IBX описана в статье про IBX
http://www.ibase.ru/devinfo/ibx.htm
чтобы в соответствующих полях DB_GRID-a отображалось значение подставляемого поля, а не его идентификатор.
это уже не МД а лукапы, или это делается запросом, а не "в гриде"
http://www.ibase.ru/devinfo/joins.htm
опять же, что касается гридов и лукапов - описано в книжках для начинающих. Почитайте любую по C++Builder, где описана работа с данными.

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

Дмитрий Б.
Сообщения: 56
Зарегистрирован: 05 дек 2007, 18:09

Re: Как правильно работать с Primary Key и Foregrin Key

Сообщение Дмитрий Б. » 04 май 2012, 14:42

Большое спасибо за наводку и разьяснение.

С Уважением, Дмитрий.

Ответить