powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / варианты ссылочной целосности
13 сообщений из 13, страница 1 из 1
варианты ссылочной целосности
    #32807511
Вопросник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемый Форум! Есть такой вопрос, как лутше реализовывать ссылочную целостность в Билдере.
Вообщем, у меня ПБ 9 и АСА 8!
Есть 3- и таблицы, тип связи "один к одному". При создании внешних ключей таблиц Т2 и Т3 на таблицу Т1 - опцию каскадное удаление не ставил.
Соответственно в ПБ при удалении записи из Т1 -ругается, что на примари кей есть ссылки из других таблиц.

Так вот, вопрос! Что лутше? Оставить все как есть, и прежде чем удалять в Т1, удалять в Т2 и в Т3 ? или перенастроить в БД внешние ключи с каскадным удалением?
...
Рейтинг: 0 / 0
варианты ссылочной целосности
    #32807529
Alexander Kolotinets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВопросникУважаемый Форум! Есть такой вопрос, как лутше реализовывать ссылочную целостность в Билдере.
Вообщем, у меня ПБ 9 и АСА 8!
Есть 3- и таблицы, тип связи "один к одному". При создании внешних ключей таблиц Т2 и Т3 на таблицу Т1 - опцию каскадное удаление не ставил.
Соответственно в ПБ при удалении записи из Т1 -ругается, что на примари кей есть ссылки из других таблиц.

Так вот, вопрос! Что лутше? Оставить все как есть, и прежде чем удалять в Т1, удалять в Т2 и в Т3 ? или перенастроить в БД внешние ключи с каскадным удалением?

Как вариант можно вызывать хранимую процедуру для удаления данных в связанных таблицах.
...
Рейтинг: 0 / 0
варианты ссылочной целосности
    #32807548
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВопросникЕсть такой вопрос, как лутше реализовывать ссылочную целостность в Билдере
Не в билдере, а в базе.
ВопросникТак вот, вопрос! Что лутше? Оставить все как есть, и прежде чем удалять в Т1, удалять в Т2 и в Т3 ? или перенастроить в БД внешние ключи с каскадным удалением?
Ну вам то это уж и видней. Если T1 - это справочник номенклатур, а T2 и T3, к примеру, подвал накладной и счет-фактуры, то каскадное удаление, здесь категорически противопоказано. Если же Т1, Т2 и Т3 - это таблицы одного документа, а Т1 - его "шапка", то каскадное удаление здесь вполне себе вариант.
...
Рейтинг: 0 / 0
варианты ссылочной целосности
    #32807566
Ermak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Без знания назначения системы, её архитектуры и т.д. - сказать что лучше, просто невозможно.
Как вариант при обработке на стороне клиента можно при удалении в T1, естественно при использовании DataWindow, реализовать каскадное удаление в T2 и Т3. Для этого можно воспользоваться событием udatestart().
Если все три таблицы лежат в разных dw, но в одном окне, то возможно придется задействовать и событие updateend()
...
Рейтинг: 0 / 0
варианты ссылочной целосности
    #32807663
Вопросник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня касательно этого вопроса, возник еще один трабл!
Все 3-DW, указыват на одну таблицу, но предоставляют разные поля.
Проблем сапдейтом нет! А вот инсерт шалит! выдает ошибку что поля не могут быть Null, причем соответственно во 2-ом и 3 DW??

Я мыслю так, после того ка я запускаю функцию of_update() главного DW, то
проходя по цепочке всех DW -сначало заносятся данные в первое DW,,,,,,,,, ну и соответственно во втором DW уже не должно быть проблем............!!!

Но они возникают, почему?????
...
Рейтинг: 0 / 0
варианты ссылочной целосности
    #32807700
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВопросникВсе 3-DW, указыват на одну таблицу, но предоставляют разные поля.
Проблем сапдейтом нет! А вот инсерт шалит! выдает ошибку что поля не могут быть Null, причем соответственно во 2-ом и 3 DW??

Я мыслю так, после того ка я запускаю функцию of_update() главного DW, то
проходя по цепочке всех DW -сначало заносятся данные в первое DW,,,,,,,,, ну и соответственно во втором DW уже не должно быть проблем............!!!

Но они возникают, почему?????
Потому что ты схалтурил . Напиши обновления сам аккуратно ручками, и всё пройдёт.
...
Рейтинг: 0 / 0
варианты ссылочной целосности
    #32807723
Вопросник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не понял! Какие обновления?
Зделать так-------?????????????????
Ручками, значения не нулевых полей взять из DW 1 и установить в DW2 и в DW3 ????????
Да, и еще.................., почему все таки обновление в DW 1 -проходят, при ошибке в DW 2 ???? Я проверяю


if tab_1.tabpage_1.dw_one.of_update(true,true)=1 then

of_update(true,true) -либо для все цепочки, либо не для кого??????7
...
Рейтинг: 0 / 0
варианты ссылочной целосности
    #32807822
Ermak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторВсе 3-DW, указыват на одну таблицу, но предоставляют разные поля.
Проблем сапдейтом нет! А вот инсерт шалит! выдает ошибку что поля не могут быть Null, причем соответственно во 2-ом и 3 DW??

Логично, что получили проблемы.
После выполнения Insert'a в dw_1, как мне кажется, следует выполнить во первых dw_1.update(), а во вторых, retrieve для dw_2 и dw_3

В Вашем случае, наверное было бы лучше воспользоваться Share DataWindow.
...
Рейтинг: 0 / 0
варианты ссылочной целосности
    #32807849
Фотография PL99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопросник...Все 3-DW, указыват на одну таблицу, но предоставляют разные поля. IMHO, Вы плохо спроектировали базу данных.
ВопросникПроблем сапдейтом нет! А вот инсерт шалит! выдает ошибку что поля не могут быть Null, причем соответственно во 2-ом и 3 DW??
У ваc формируется DML-запрос вида
Код: plaintext
insert into TBL (f1, f2...fn) values (v1, v2...vn);
При этом в таблице TBL полей не n, а m, и m > n :-)) Об этом, кстати, Вы предлагаете участникам форума догадаться самостоятельно. А вот PowerBuilder делать такие выводы не способен :-).
Варианты, предложенные Alexander Kolotinets и Dim2000 спасут ситуацию, но полагаю, надо что-то в консерватории подправить :-)
...
Рейтинг: 0 / 0
варианты ссылочной целосности
    #32807905
Вопросник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну на счет плохой проэктировки............... это конечно возможно!
У меня документ, один, и у него в сумме 70 полей! не буду же я делать таких размеров таблицу в ширину! Вот я и зделал 3- и по 20! Теперь проблемы, как видите с инсертом!

Проэкт в стадии разработки, и я в стадии обучения поэтому попрошу особо в консерваторию не посылать, мне и здесь Вам голову морочить нравится!
Если, таблица в АСА не боится количества 70 полей? То переделать - не представляется проблематичным!
...
Рейтинг: 0 / 0
варианты ссылочной целосности
    #32807957
Фотография ЗоринАндрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВопросникЕсли, таблица в АСА не боится количества 70 полей?Да хоть 999!!!

Ну вот теперь все ясно. Выяснилось что ссылочная целостность ни при чем вообще.

Таблицу сделать одну.
Сделать 3 DW с одинаковым SELECT.
В первом DW оставить треть полей - остальные удалить.
Аналогично со вторым и третьим.
Первому DW сказать dw1.Retrieve()
двум другим dw1.ShareData(dw2) , dw1.ShareData(dw3)
для сохранения достаточно будет сказать dw1.Update()

Если что непонятно - спрашивай.
...
Рейтинг: 0 / 0
варианты ссылочной целосности
    #32807982
Вопросник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо ЗоринАндрей, и всем остальным! Я так уже кинулся делать, другого способа не вижу...!!!
...
Рейтинг: 0 / 0
варианты ссылочной целосности
    #32808544
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВопросникНу на счет плохой проэктировки............... это конечно возможно!
У меня документ, один, и у него в сумме 70 полей! не буду же я делать таких размеров таблицу в ширину! Вот я и зделал 3- и по 20! Теперь проблемы, как видите с инсертом!

Проэкт в стадии разработки, и я в стадии обучения поэтому попрошу особо в консерваторию не посылать, мне и здесь Вам голову морочить нравится!
Если, таблица в АСА не боится количества 70 полей? То переделать - не представляется проблематичным!
Мне почему то кажется, что 70 полей попахивают явной денормализацией базы данных. Очень редко можно встретить документы с таким действительно уникальным кол-вом полей. У Вас не может быть такой ситуации, что часть информации из документа можно было бы вынести в справочники, как повторяющуюся (например Наименование Банка, БИК, ИНН в платежке и т.д.) ?

По поводу выдержит ли ASA таблицу с такой шириной (кол-вом полей) - это зависит от назначения таблицы. Если ширина одной записи получается слишком большой для установленного размера страницы БД, эта таблица будет часто использоваться в запросах и в ней будет слишком много строк, то тогда конечно же имеет смысл разбить ее на несколько таблиц, оставив в основной таблице поля, которые наиболее часто востребованны в запросах, а все дополнительные информативные поля вынести в дополнительную таблицу. Делить таблицу на целых три абсолютно смысла не вижу.

P.S. Для ASA9 еще более удобным вариантом хранения множества полей является хранение их значений в long varchar полях в виде XML, где с помощью алгоритма соединения LATERAL можно элементарно их вытаскивать и обрабатывать в запросах.

P.S.2 А вообще то задавайте вопросы по ASA в форуме Sybase, а вопросы по правильному проектированию модели БД в форуме "Проектирование БД".
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / варианты ссылочной целосности
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]