:: Visual Foxpro, Foxpro for DOS
Где можно почитать как правильно оформить в BD отношение один ко многим...
Другой Дмитрий

Сообщений: 15
Дата регистрации: 23.03.2005
Где можно почитать как правильно оформить в BD отношение один ко многим и сделать ввод в таблицы (не в смысле проектирования таблиц, а в смысле кода)?




------------------
Ratings: 0 negative/0 positive
Re: Где можно почитать как правильно оформить в BD отношение один ко многим...
BladeRunner
Автор

Сообщений: 50
Дата регистрации: 14.06.2004
Немного недопонял - интересует идеология проектирования, т.е. теоремы о нормализации таблиц или код которым устанавливаются реляции?
Ratings: 0 negative/0 positive
Re: Где можно почитать как правильно оформить в BD отношение один ко многим...
Другой Дмитрий

Сообщений: 15
Дата регистрации: 23.03.2005
Код, желательно Visual FoxPro 8.0. В смысле как ID из главной таблицы присваивать при добавлении в подчиненную таблицу, в каком месте: делать процедуру в правилах ил можно прямо в форме? Как обращаться при этом к полям: всегда через select или как в Clippere cAlias->FieldName. Используется везде глобальная область. Хотя бы исходник какой нибудь проги попроще.
Ratings: 0 negative/0 positive
Re: Где можно почитать как правильно оформить в BD отношение один ко многим...
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Hi Другой Дмитрий!

Цитата:
В смысле как ID из главной таблицы присваивать при добавлении в
подчиненную таблицу, в каком месте
Там где тебе удобно - можно в DefaultValue прописать - исходя из того что
алиасы ВСЕГДА будут строго одинаковыми, ну и навесив проверку по
USED('ParentTableAlias').
Можно в форме - ты же где-то там прописываешь APPEND BLANK - так замени его
на соответствующий INSERT.
Можно в объектах управления курсорами (aka Бизнес-объекты) - если ты таковые
используешь.
Есть миллион нюансов у каждого способа, и вряд-ли тебе кто-то их сможет все
указать - бери и пробуй. Идеального и всегда_и_везде_применимого решения не
существует.
Цитата:
Как обращаться при этом к полям: всегда через select или как в
Clippere cAlias->FieldName.
Как тебе удобно. Учитывая что алиас #
имя_таблицы - и соответственно в "общем случае" знание о том что TableHead
связано с TableDetails по полю HeadID недостаточно для организации
"обращения к полям управляющей таблицы" Хотя если следовать простым
ограничениям - Alias = Table_Name то всё будет сильно проще.
Цитата:
Используется везде глобальная область
Это очень зря.
Также подумай насчёт того, что доступ может быть организован не напрямую, а
через посредство: 1) Буферов, 2) Представлений.
И что в один прекрасный день может потребоваться доступ "чужой" программы к
твоим данным - через ODBC или ещё как-то...




------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Где можно почитать как правильно оформить в BD отношение один ко многим...
BladeRunner
Автор

Сообщений: 50
Дата регистрации: 14.06.2004

"Код, желательно Visual FoxPro 8.0. В смысле как ID из главной таблицы присваивать при добавлении в подчиненную таблицу, в каком месте: делать процедуру в правилах ил можно прямо в форме?" - по моему мнению всегда, подчёркиваю - всегда в коде БД! ... выполнение, как сказал Игорь может быть любым т.е. и как значения по умолчанию, так и триггеры на событии. Почему всегда? Потому что как только в БД появился код и кучка dbf-файлов превратилась в базу данных, она стала способна инкапсулировать СВОЙ СЛУЖЕБНЫЙ код - это код поддержки ссылочной целостности, счётчики и т.д. И БД СТАЛА "незвисима" ... какой-бы обработчик не касался твой базы - все счётчики и отношения будут в целости и сохранности. Сделав один раз триггеры ты уже не будешь вспоминать, внёс-ли ты на кнопке формы нужный код и нет.

"Используется везде глобальная область." - нет!Как правило в базе есть 10 - 20 основных таблиц и куча видов. Используй PrivateDataSession для того, чтобы уменьшить к-во головной боли. Например у тебя пользователь открыл ... нуууу ... справочник товаров - вот! Смотрит карточку товара одной товарной группы, потом его понесло в другую группу, но он не хочет закрывать старую карточку! Форма-то запустится сколько угодно раз, а имя рабочей области?! Отлавливать имена, контролировать переходы и т.п.? Ну хочет он 100 карточке за раз видеть, ну пусть смотрит. Ну будет память под буфера использоваться, ну и что?

"Хотя бы исходник какой нибудь проги попроще." - какой именно пример кода ты бы хотел видеть?
Ratings: 0 negative/0 positive
Re: Где можно почитать как правильно оформить в BD отношение один ко многим...
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Hi BladeRunner!

Я считаю что БД должна лишь контролировать корректность вводимых данных - т.е. осуществлять поддержку ссылочной целостности. А вот собственно устанавливать связи должен другой слой - никак не база. Ибо не может база знать КАК будут организованы отношения в клиентской части - будет там открыта некоторая таблица под определённым алиасом или нет - нужно ли пытаться к "текущей записи в таблице-шапке" привязываться или нет и т.п. Это МОЖЕТ быть возложено на промежуточный слой (бизнес логику) - ели таковой имеется, а вот на базу - IMHO не стоит. И ИМЕННО для больших и развивающихся систем. Если структура стабильна, и пользует базу всего одна программа (и ТЫ автор и программы и структуры данных) тогда ещё можно сделать какие-то предположения насчёт того в каком окружении будет работать таблица, и прописать нечто типа
IIF(USED("ParentTable") AND VARTYPE(ParentTable.ID) = "I" AND ..., ParentTable.ID, .NULL.)
в DefaultValue...




------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Где можно почитать как правильно оформить в BD отношение один ко многим...
BladeRunner
Автор

Сообщений: 50
Дата регистрации: 14.06.2004
Игорь, я даже не буду спорить - ты абсолютно прав, и скажу больше - я именно это и имел ввиду! Возможно плохо это изложил ... я говорил о ситуации, например - когда при добавлении в основную таблицу, содержащую "шапку" документа, мы ещё добавляем данные в таблицу со списком товаров для данного документа - автоматически ID из основной - то обрабатывать и контролировать именно "добавление" и именно "этого ID" должна база, а не форма ... а вот как уже дальше это будет обрабатываться и в каком виде - это уже не дело базы.
Ratings: 0 negative/0 positive
Re: Где можно почитать как правильно оформить в BD отношение один ко многим...
BladeRunner
Автор

Сообщений: 50
Дата регистрации: 14.06.2004
Коллега, кстати, так и не сказал, какой же он код хочет увидеть ...
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 24 (Гостей: 24)

© 2000-2024 Fox Club 
Яндекс.Метрика