Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Нарушение FOREIGN KEY / 21 сообщений из 21, страница 1 из 1
23.08.2004, 18:41:12
    #32661927
Rivkin Dmitry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нарушение FOREIGN KEY
Опять случилось нарушение FOREIGN KEY, т.е. есть две таблицы, скажем, Tbl1 (f1 text, f2 date, f3 time, f4 double),
Tbl2 - те же поля плюс поля f5, f6, ... f10. В первой таблице f1, f2, f3, f4 - ПК,
эти же поля и поля f5, f6 ПК во второй таблице. Таблицы связаны между собой по FOREIGN KEY (поля f1, f2, f3, f4 ). А97
Работает в бльшинстве случаев нормально. Но иногда происходит нарушение
FOREIGN KEY, т.е. в Tbl2 появляются данные, отличные от Tbl1. Чаще всего по полю f3, иногда по f4. Акс не ругается, таблицы можно открыть. Но в Tbl2 встречаются нередактируемые записи.

Что можно предпринять во-первых, чтобы это не происходило, и, во-вторых, если произошло, как ремонтировать?
Compact - не помогает! Копировать в-ручную - нудно и теряются данные.
...
Рейтинг: 0 / 0
23.08.2004, 19:00:50
    #32661956
TatianaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нарушение FOREIGN KEY
т.е простыми словами ключ является составным
мне кажется что тут и есть проблема
а есть ли на самом деле надобность в составном ключе?
может можно в первой таблице добавить счётчик как ключ или формировать по своим каким-то правилам не составной ключ, из тех полей сделать составной уникальный индекс и связать таблицы по полю-счётчику ?
и не надо будет данные дублировать
...
Рейтинг: 0 / 0
23.08.2004, 19:11:14
    #32661963
Rivkin Dmitry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нарушение FOREIGN KEY
В идеале - то что предлагает Татьяна, безусловно, лучше. Хотя там тоже полно подводных камушков. Ну, нпример, как заполнять таблицы. Чтобы заполнить вторую, сначала надо заполнить первую, главную и получить ключик, а уж с этим ключиком можно соваться во вторую. На этом пути не мало копий сломано уже... В моем случае, заполнив первую таблицу, не задумываясь ни о чем пишу сразу во вторую, благо ключевые поля у менгя уже в руках. Но по большому случаю, конечно, лучше.
С другой стороны, эта конструкция работает давно и достаточно устойчиво. Но случается... иногда... Неприятно!
...
Рейтинг: 0 / 0
23.08.2004, 19:26:39
    #32661976
TatianaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нарушение FOREIGN KEY
ты сам себе не противоречь пож-та


Опять случилось нарушение FOREIGN KEY , т.е. есть две таблицы, скажем, Tbl1 (f1 text, f2 date, f3 time, f4 double),
Tbl2 - те же поля плюс поля f5, f6, ... f10. В первой таблице f1, f2, f3, f4 - ПК,
эти же поля и поля f5, f6 ПК во второй таблице. Таблицы связаны между собой по FOREIGN KEY (поля f1, f2, f3, f4 ). А97
Работает в бльшинстве случаев нормально. Но иногда происходит нарушение FOREIGN KEY, т.е. в Tbl2 появляются данные, отличные от Tbl1. Чаще всего по полю f3, иногда по f4. Акс не ругается, таблицы можно открыть. Но в Tbl2 встречаются нередактируемые записи.


составной ключ из 4 полей?
и 4 поля тащить в другую таблицу?
к тому же во 2 таб-ле опять составной ключ
и во второй поля f5, f6 сделай уникальным индексом и добавь ключ

а как же нормализация при таком проэктировании?

а что за проблема с заполнением таблицы?
...
Рейтинг: 0 / 0
23.08.2004, 21:06:24
    #32662042
Rivkin Dmitry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нарушение FOREIGN KEY
Нет проблем! Просто, изменить то, что уже работает- трудно очень!
Но вопрос остается без ответа - почему и как?

А все остальное, ну просто, у меня при заполнении таблиц всегда есть все данные ключа. Поэтому, надо только соблюсти порядок заполнения таблиц. Что и происходит. И работает. А вот в процессе работы происходит что-то, добавляются милисекунды в полях времени в подчиненной таблице или, вдруг, дабл принимает в мантисе дополнительные цифры, типа, д.б. 111.2, а там 111.200001! И все, ключ летит в тар-тарары. При этом, все данные сохранены!
...
Рейтинг: 0 / 0
24.08.2004, 00:32:19
    #32662103
Hummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нарушение FOREIGN KEY
А вы неявное преобразование типов не используйте. Не бывает так - что вдруг не стого ни с сего число вдруг стало 111.200001 вместо 111.2.
...
Рейтинг: 0 / 0
24.08.2004, 09:25:18
    #32662282
Rivkin Dmitry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нарушение FOREIGN KEY
HummerА вы неявное преобразование типов не используйте. Не бывает так - что вдруг не стого ни с сего число вдруг стало 111.200001 вместо 111.2.

Нет не применяю. Происходит, тем не менее, самопроизвольно.
...
Рейтинг: 0 / 0
24.08.2004, 09:30:52
    #32662292
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нарушение FOREIGN KEY
FK по double??? FK по дате, которая по сути своей тоже double?
Месье знает толк в извращениях
Месье не знает только того, что при операциях с числами с плавающей точкой хронически противопоказаны сравнения на точное равенство because of погрешности машинной арифметики. А если противопоказано сравнение на точное равенство - о каких ключах может идти речь?
...
Рейтинг: 0 / 0
24.08.2004, 09:34:14
    #32662297
TatianaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нарушение FOREIGN KEY
у поля double в обоих таблицах decimal places проверь,

надеюсь у тебя не ивритский офис стоит
у меня в ивритской версии были такие баги, которых в английской не было
...
Рейтинг: 0 / 0
24.08.2004, 09:41:21
    #32662311
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нарушение FOREIGN KEY
TatianaTу поля double в обоих таблицах decimal places проверь
Дык ведь это только формат отображения?
...
Рейтинг: 0 / 0
24.08.2004, 09:51:42
    #32662330
Rivkin Dmitry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нарушение FOREIGN KEY
TatianaTу поля double в обоих таблицах decimal places проверь,

надеюсь у тебя не ивритский офис стоит
у меня в ивритской версии были такие баги, которых в английской не было

В точку! Именно в ивритской версии. А что делала?
...
Рейтинг: 0 / 0
24.08.2004, 09:56:31
    #32662342
TatianaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нарушение FOREIGN KEY
что делала - принудительно перевела на английскую, но в этом твоём конкретном случае своё мнение ещё вчера изложила
...
Рейтинг: 0 / 0
24.08.2004, 10:08:08
    #32662372
Rivkin Dmitry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нарушение FOREIGN KEY
TatianaTчто делала - принудительно перевела на английскую, но в этом твоём конкретном случае своё мнение ещё вчера изложила

Отношусь с уважением, но что делать с существующей датой?
...
Рейтинг: 0 / 0
24.08.2004, 10:27:58
    #32662424
TatianaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нарушение FOREIGN KEY
с первой таблицой всё просто
разорви связи
добавь ещё одно поле -счётчик в 1ю таблицу, оно заполнится автоматом , его и назначишь ключём, а комбинацию из тех 4 - если надо, уникальным индексом
это же поле но уже с типом лонг как FOREIGN KEY добавишь во вторую таблицу
как его высчитать?
напишешь функцию которая будет по комбинации из 4 полей 1й таблицы давать значение счётчика и искать по этой же комбинации во 2 таблице, но с преобразованием поля double к определённому формату (из обеих таблиц) ,
например с 1 знаком после запятой иличасть до запятой
(проанализируй данные)
после этого свяжешь по новым полям
...
Рейтинг: 0 / 0
24.08.2004, 10:45:05
    #32662461
Rivkin Dmitry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нарушение FOREIGN KEY
TatianaT
Все это понятно, только все это уже дано работает у клиентов, во-первых, во-вторых, таких таблиц, как вторая, не одна, а 7, в-третьих, большая часть этих таблиц содержит много записей и, значит, подобная переработка потребует много времени, а от меня потребует много кода. Кроме того, существуют BackUp.Mdb разбитые по меряцам, а значит, для Restore потребуется еще код. Я уж не говорю о том, что придется переделыватьвсе формы и отчеты...
...
Рейтинг: 0 / 0
24.08.2004, 10:49:34
    #32662470
TatianaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нарушение FOREIGN KEY
сочуствую от всей души
просто это лишний раз доказывает что за говённое проэктирование(извеняюсь за грубость) всегда приходится расплачиваться
...
Рейтинг: 0 / 0
24.08.2004, 10:57:07
    #32662490
Rivkin Dmitry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нарушение FOREIGN KEY
TatianaTсочуствую от всей души
просто это лишний раз доказывает что за говённое проэктирование(извеняюсь за грубость) всегда приходится расплачиваться

Такова программистская пита: иногда с хумусом, чаще с хариусом! :-) :-(
...
Рейтинг: 0 / 0
24.08.2004, 11:00:19
    #32662499
assa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нарушение FOREIGN KEY
Встречал частое разрушение вторичных ключей (целостности) (и базы) при работе на новеле (файл-сервер) из-за не отключенного клиентского кеширования. Ключ не помню.

лечится ситуация (помимо восстановления самого файла и целостности в нем ручками) примерно так:
Код: plaintext
set client file caching enabled = off 
...
Рейтинг: 0 / 0
24.08.2004, 11:13:19
    #32662540
Rivkin Dmitry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нарушение FOREIGN KEY
assaВстречал частое разрушение вторичных ключей (целостности) (и базы) при работе на новеле (файл-сервер) из-за не отключенного клиентского кеширования. Ключ не помню.

лечится ситуация (помимо восстановления самого файла и целостности в нем ручками) примерно так:
Код: plaintext
set client file caching enabled = off 


И где запустить эту установку?
...
Рейтинг: 0 / 0
24.08.2004, 11:17:09
    #32662550
assa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нарушение FOREIGN KEY
Rivkin Dmitry assaВстречал частое разрушение вторичных ключей (целостности) (и базы) при работе на новеле (файл-сервер) из-за не отключенного клиентского кеширования. Ключ не помню.

лечится ситуация (помимо восстановления самого файла и целостности в нем ручками) примерно так:
Код: plaintext
set client file caching enabled = off 


И где запустить эту установку?

это запущается на новеле - админом сети
или у каждого клиента проверяются настройки:
брал где-то в сети
Для сервера Novel 5 with SP5 или больше есть встроенная опция для отключения op-locking . Набрать на консоле сервера:
set client file caching enabled = off

У клиентов NetWare имеется реквизит Advanced client, который управляет возможностью Opportunistic Locking клиента, и может выборочно активироваться и деактивироваться на клиентской машине для каждого из клиентов. Опцию Opportunistic Locking можно заблокировать также на сервере NetWare, используя для этого подсказку Client File Caching Enabled в разделе NCP Parameters при использовании функции Monitor. Таким образом, эта функция будет заблокирована для всех клиентов этого сервера.
...
Рейтинг: 0 / 0
24.08.2004, 11:34:46
    #32662611
Rivkin Dmitry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нарушение FOREIGN KEY
Нет, с Новелом не работаем.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Нарушение FOREIGN KEY / 21 сообщений из 21, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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