powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Целостность данных
75 сообщений из 75, показаны все 3 страниц
Целостность данных
    #40054454
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть 3 таблицы
tprcs - процессы и их описание
MAIN1 - структура изделия, дерево
spztmp - описывает какой процесс назначен для выполнения на эту деталь на этом изделии
уникальный номер детали - codever
Есть ли возможность какими-нибудь ключами, индексами или еще как обеспечить чтобы при занесении в spztmp записи о назначении процесса значения codever в MAIN1 и tprcs были одинаковыми?
Пока все решается проверкой через код, но может быть можно и по другому?
PS - очень прошу, не надо вопросов зачем мне это надо и почему все организовано так а не иначе
...
Рейтинг: 0 / 0
Целостность данных
    #40054464
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serg197311
Есть ли возможность какими-нибудь ключами, индексами или еще как обеспечить чтобы при занесении в spztmp записи о назначении процесса значения codever в MAIN1 и tprcs были одинаковыми?
да. Пробуй поработать с ограничениями (CHECK CONSTRAINT ).
...
Рейтинг: 0 / 0
Целостность данных
    #40054505
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serg197311
Есть ли возможность какими-нибудь ключами, индексами или еще как обеспечить чтобы при занесении в spztmp записи о назначении процесса значения codever в MAIN1 и tprcs были одинаковыми?


Работает, - пусть себе работает...
А чем напрягает, что не устраивает ?
Вроде всё прозрачно:
- При добавлении записи spztmp, по идее соответствующие записи в MAIN1 и tprcs уже есть
- Остается взять значение codever из ведущей таблицы и записать не глядя в ведомую...
- Если codever берется из вне или рожается в момент записи в spztmp, то писать его в обе таблицы (MAIN1 и tprcs)...
Исходя из данной схемы, в spztmp нельзя добавить запись если нет соответствия в tprcs, по этому в дальнейшем при добавлении в MAIN1, codever нужно брать из tprcs...
Но если codever формируется в момент создания MAIN1, то его нужно писать и в соответствующий tprcs...

Тут алгоритм по формированию codever на 100 % зависит от схемы БД...
Кстати, Левая связь не очень айс (грабельки), возможно она обусловлена общим процессом (например записи в MAIN1 пишутся когда-нибудь потом или вообще никогда)...
Но, Если есть документы содержащие все три таблицы, они могут быть косячными при удалениях в tprcs или МAIN1, страшного ничего нет, просто нужно иметь это ввиду...

Я к чему? Топик называется Целостность данных...
...
Рейтинг: 0 / 0
Целостность данных
    #40054553
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vmag

Тут алгоритм по формированию codever на 100 % зависит от схемы БД...
и если БД в начальной стадии разработки думайте и переделывайте структуру,если близко к концу и дальнейшей доработки не планируется-и так пойдет, если иначе-получите гемор избавиться от которого,в дальнейшем будет намного сложнее,чем сейчас
Это все то же к тому что топик называется "целостность данных" а левая связь без неё,что может привести к ошибкам и появлению "бесхозных" записей
...
Рейтинг: 0 / 0
Целостность данных
    #40054566
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Панург
да. Пробуй поработать с ограничениями (CHECK CONSTRAINT ).

Спасибо.... буду пробовать, но пока совсем не понимаю как....
...
Рейтинг: 0 / 0
Целостность данных
    #40054714
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serg197311
Спасибо.... буду пробовать, но пока совсем не понимаю как....

Serg197311
Есть ли возможность какими-нибудь ключами, индексами или еще как обеспечить чтобы при занесении в spztmp записи о назначении процесса значения codever в MAIN1 и tprcs были одинаковыми?


Выкинь нахрен codever из MAIN1 и tprcs и вставь его в одном экземпляре в spztmp раз оно одинаково...
Это просто очевидно...
...
Рейтинг: 0 / 0
Целостность данных
    #40054717
DarkMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serg197311
Спасибо.... буду пробовать, но пока совсем не понимаю как....

Попробуйте для начала дать нормальные и понятливые названия таблицам и полям.
...
Рейтинг: 0 / 0
Целостность данных
    #40054766
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMan
Serg197311
Спасибо.... буду пробовать, но пока совсем не понимаю как....

Попробуйте для начала дать нормальные и понятливые названия таблицам и полям.

После каждого этапа разработки я документирую все наименования полей, таблиц, их назначения и тд(модули-функции переменные в функциях). Мне обозначения понятны, в документации описаны, не вижу ни малейшей необходимости что-то менять.
...
Рейтинг: 0 / 0
Целостность данных
    #40054767
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vmag

Выкинь нахрен codever из MAIN1 и tprcs и вставь его в одном экземпляре в spztmp раз оно одинаково...
Это просто очевидно...

Это неочевидно. Более того - невозможно. И не относится к теме данного топика уж точно. Буду очень благодарен, если кто-нибудь поможет вместо обсуждения структуры составить инструкцию ALTER TABLE ADD CONSTRAINT...
...
Рейтинг: 0 / 0
Целостность данных
    #40054770
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serg197311
Мне обозначения понятны, в документации описаны, не вижу ни малейшей необходимости что-то менять.

хотя СОСТАВ ИЗДЕЛИЯ моя основная задача - у меня не возникло желания сопоставлять ваши обозначения со своими, что-бы понять суть вопроса
...
Рейтинг: 0 / 0
Целостность данных
    #40054776
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serg197311
Есть ли возможность какими-нибудь ключами, индексами или еще как обеспечить чтобы при занесении в spztmp записи о назначении процесса значения codever в MAIN1 и tprcs были одинаковыми?
Первое, очевидное, решение - создание уникального индекса (code, codever) и связывание таблиц именно по этому выражению, а не просто по (code).

Второе, требующее анализа и изменения структуры - заново провести анализ. Если появилось требование безуслов6ного соответствия - значит, codever является атрибутом либо сущности из tprcs, либо сущности из MAIN1, и должно присутствовать только там, а для сущности другой таблицы оно должно получаться по связи.
...
Рейтинг: 0 / 0
Целостность данных
    #40054777
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to ПЕНСИОНЕРКА - Хорошо
Таблица MAIN1
Code
OWN код узла и его вышестоящий код - для создания дерева изделия
sernn - уникальный код главного изделия(главной сборки)
codever - уникальный код детали
qt - количество деталей в узле
остальные поля ИМХО несущественны для решаемой задачи

Таблица tprcs
CODE - уникальный код процесса
CODEVER - уникальный номер детали, для которой создан процесс
Остальное - несущественно

Таблица spztmp
CODE - уникальный код записи, в дальнейшем нигде не используется, подумываю удалить
CODM1 - CODE из таблицы MAIN1
cdtp - код назначенного к выполнению для этой детали именно в этой позиции общего дерева изделия процесса
остальное несущественно

Процессов (CODE из tprcs) может быть несколько для одной и той же детали(codever)
На деталь из сборки(code из MAIN1) процесс может быть не назначен, назначен один или назначено несколько процессов

Цель вопроса - предотвратить назначение процессов, разработанных для другой детали.
Как я уже писал - программно через запросы и код я это отслеживаю, но хотелось бы использовать возможности SQL и заодно научиться новому....
...
Рейтинг: 0 / 0
Целостность данных
    #40054780
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina
Первое, очевидное, решение - создание уникального индекса (code, codever) и связывание таблиц именно по этому выражению, а не просто по (code)..


На той схеме, что вначале видно, что связь именно по ключевым полям

Akina
codever является атрибутом либо сущности из tprcs, либо сущности из MAIN1, и должно присутствовать только там, а для сущности другой таблицы оно должно получаться по связи.

На той схеме, что сверху я не показал много таблиц, и в честности таблицу VERS с ключевым уникальным полем CODE (codever во всех остальных таблицах), по которому и осуществляется связь с ними
Надеюсь, что из поста выше станет понятно, почему codever присутствует и в табл MAIN1 и и в TPRCS.
...
Рейтинг: 0 / 0
Целостность данных
    #40054781
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdku
а левая связь без неё,что может привести к ошибкам и появлению "бесхозных" записей

Картинка эту я нарисовал для этой темы и пропустил при рисовании , в реальности там правильная связь, такая же как и правая
...
Рейтинг: 0 / 0
Целостность данных
    #40054792
DarkMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serg197311
После каждого этапа разработки я документирую все наименования полей, таблиц, их назначения и тд(модули-функции переменные в функциях).
Мне обозначения понятны, в документации описаны, не вижу ни малейшей необходимости что-то менять.

А если кто то будет поддерживать проэкт после Вас ? Месяц сидеть и разбираться с документацией ?
Железная логика , даже нет аргументов.
...
Рейтинг: 0 / 0
Целостность данных
    #40054797
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMan

Железная логика , даже нет аргументов.

Мы что сейчас обсуждаем? Спасибо за информацию, но я был бы вам значительно более благодарен, если бы вы помогли реально, а не переводили тему непонятно куда и непонятно зачем.
...
Рейтинг: 0 / 0
Целостность данных
    #40054802
DarkMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serg197311
если бы вы помогли реально,

I am sorry , но лично я не собираюсь копаться в Ваших дебрях и иероглифах . Если Вам советуют изменить не только названия , но и структуру базы данных . Все советы Вы игнорируете .
Google Вам в помощь . !!!
...
Рейтинг: 0 / 0
Целостность данных
    #40054812
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMan
I am sorry , но лично я не собираюсь копаться в Ваших дебрях и иероглифах .

Darkman, Я задал простой в общем вопрос, точно описал какие поля, где что и как. Не надо тут копаться нигде, не надо обсуждать названия полей, не надо обсуждать структуру базы - вопрос касается только 3-х таблиц.
ЗЫ если не знаете, как помочь реально, то и правда, лучше здесь не писать, не оффтопить.
...
Рейтинг: 0 / 0
Целостность данных
    #40054868
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serg197311
Картинка эту я нарисовал для этой темы и пропустил при рисовании , в реальности там правильная связь, такая же как и правая

Вот видите, вы нарисовали на доске кучу граблей изначально, поэтому и весь разговор до этого был только о них...
Serg197311
На той схеме, что сверху я не показал много таблиц, и в честности таблицу VERS с ключевым уникальным полем CODE (codever во всех остальных таблицах), по которому и осуществляется связь с ними
Надеюсь, что из поста выше станет понятно, почему codever присутствует и в табл MAIN1 и и в TPRCS.

Теперь понятно...
Тогда наоборот - добавьте свой codever ещё и в spztmp и связи между этими таблицами делайте по codever а не по ключам. Если сумеете, то можете оставить и старые связи и добавить новые... если будет связь по codever, то вот эта Цель
Serg197311
Цель вопроса - предотвратить назначение процессов, разработанных для другой детали.

Превратится в обязательное условие при добавлении в spztmp...
И да... вот это зря:
Serg197311
Таблица spztmp
CODE - уникальный код записи, в дальнейшем нигде не используется, подумываю удалить

В связующей таблице уникальный код делает элементарным удаление нужной записи, особенно если их более одной, а нужно удалить именно N - ную в списке, которая выделена... Если ключ есть, то после выделения - ты сидишь прямо на нём сейчас...

Естественно связь по codever будет такой как у вас нарисована левая связь (это о Целосности, каскадном удалении и т.д.) лучше попробовать совместить...
...
Рейтинг: 0 / 0
Целостность данных
    #40054871
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vmag
Вот видите, вы нарисовали на доске кучу граблей изначально, поэтому и весь разговор до этого был только о них......

Mea culpa... confiteor...

vmag

Тогда наоборот - добавьте свой codever ещё и в spztmp и связи между этими таблицами делайте по codever а не по ключам. Если сумеете, то можете оставить и старые связи и добавить новые... если будет связь по codever, то вот эта Цель
Serg197311
Цель вопроса - предотвратить назначение процессов, разработанных для другой детали.

Превратится в обязательное условие при добавлении в spztmp......


Думал про подобное - это действительно самый простой выход. НО очень хотелось(хочется:)) ADD(CHECK) CONSTRAINT понять и научится применять...

vmag

И да... вот это зря:
Serg197311
Таблица spztmp
CODE - уникальный код записи, в дальнейшем нигде не используется, подумываю удалить

В связующей таблице уникальный код делает элементарным удаление нужной записи, особенно если их более одной, а нужно удалить именно N - ную в списке, которая выделена... Если ключ есть, то после выделения - ты сидишь прямо на нём сейчас...
Убедили, не буду удалять...
...
Рейтинг: 0 / 0
Целостность данных
    #40055097
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробовал так
Код: sql
1.
2.
"ALTER TABLE spztmp ADD CONSTRAINT MyCheck CHECK " & _
"((Select tprcs.codever from tprcs inner join spztmp on tprcs.code=spztmp.cdtp)=(Select main1.codever from main1 inner join spztmp on main1.code=spztmp.codm1)"


Выдает ошибку - Ошибка синтаксиса в предложении ограничения CHECK №№ -217217900
Кто поможет разобраться?
Зы - простые CONSTRAINTы научился создавать и удалять
...
Рейтинг: 0 / 0
Целостность данных
    #40055122
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serg197311
На той схеме, что вначале видно, что связь именно по ключевым полям

Перечитайте ещё раз (или не раз) то, что я написал - до понимания, в чём разница.

Serg197311
Надеюсь, что из поста выше станет понятно, почему codever присутствует и в табл MAIN1 и и в TPRCS.
Из него ясно только то, что Вы незнакомы с понятием "переопределённые данные" и проблемами, которые могут возникать из-за их использования. И пытаетесь их использовать для копеечного упрощения себе жизни, даже не подозревая о поле с граблями, которое готовите.
...
Рейтинг: 0 / 0
Целостность данных
    #40055160
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina
Serg197311
Надеюсь, что из поста выше станет понятно, почему codever присутствует и в табл MAIN1 и и в TPRCS.
Из него ясно только то, что Вы незнакомы с понятием "переопределённые данные" и проблемами, которые могут возникать из-за их использования. И пытаетесь их использовать для копеечного упрощения себе жизни, даже не подозревая о поле с граблями, которое готовите.

Я естественно знаком с этими понятиями в меньшей степени, чем Вы. И я естественно внимательно прочитал то что вы написали - Второе, требующее анализа и изменения структуры - заново провести анализ. Если появилось требование безуслов6ного соответствия - значит, codever является атрибутом либо сущности из tprcs, либо сущности из MAIN1, и должно присутствовать только там, а для сущности другой таблицы оно должно получаться по связи.

И считаю, что дал объяснения почему все так вот здесь
Таблица MAIN1
Code
OWN код узла и его вышестоящий код - для создания дерева изделия
sernn - уникальный код главного изделия(главной сборки)
codever - уникальный код детали
qt - количество деталей в узле
остальные поля ИМХО несущественны для решаемой задачи

Таблица tprcs
CODE - уникальный код процесса
CODEVER - уникальный номер детали, для которой создан процесс
Остальное - несущественно

Таблица spztmp
CODE - уникальный код записи, в дальнейшем нигде не используется, подумываю удалить
CODM1 - CODE из таблицы MAIN1
cdtp - код назначенного к выполнению для этой детали именно в этой позиции общего дерева изделия процесса
остальное несущественно

Процессов (CODE из tprcs) может быть несколько для одной и той же детали(codever)
На деталь из сборки(code из MAIN1) процесс может быть не назначен, назначен один или назначено несколько процессов

Я действительно считаю, что поступить по Вашему совету я не могу. Но буду очень Вам благодарен, если Вы объясните мне - как можно сделать по-другому с сохранением требуемых возможностей
...
Рейтинг: 0 / 0
Целостность данных
    #40055167
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina
Serg197311
На той схеме, что вначале видно, что связь именно по ключевым полям

Перечитайте ещё раз (или не раз) то, что я написал - до понимания, в чём разница.

Приношу извинения за то , что первоначальная картинка не полностью отражала действительность и привожу то как есть на самом деле

Далее - ваш текст
Первое, очевидное, решение - создание уникального индекса (code, codever) и связывание таблиц именно по этому выражению, а не просто по (code).
Что имелось ввиду? Создать уникальный составной индекс для табл TPRCS из code+codever? Что это даст? code и так уникальный и что не заноси в codever индекс не даст никаких ограничений
В табл MAIN1 уже есть составной уникальный индекс из codever+own+sernn
Связь между таблицами осуществляется по уникальному(счетчик) и ключевому полю
Если я все же ошибаюсь, то прошу меня поправить
...
Рейтинг: 0 / 0
Целостность данных
    #40055171
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serg197311
MAIN1 - структура изделия, дерево

Это требует self-join - на схеме я его не вижу.

Serg197311
Таблица MAIN1
Code
OWN код узла и его вышестоящий код - для создания дерева изделия

Не понял. В смысле Code - это код узла, а OWN - код его родителя? Если так - где self-join связь?

Serg197311
sernn - уникальный код главного изделия(главной сборки)
Это - переопределение, главное изделие может быть получено запросом по дереву.

Serg197311
codever - уникальный код детали

Узел и деталь - это две отдельные сущности. Как они оказались в одной таблице?

Дальше можно уже не смотреть...
...
Рейтинг: 0 / 0
Целостность данных
    #40055177
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serg197311,
Из того что Вы написали:почему не УЗЛЫ 1:М ДЕТАЛИ 1:М ПРОЦЕСС
Может я чё не понял,поясните:собирается узел состоящий из деталей изготовляемых по разным процессам.Вы хотите получать полную информацию об узле(состав,по каким процессам изготовлены детали кто,что,где и т.д)
...
Рейтинг: 0 / 0
Целостность данных
    #40055182
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina
Serg197311
MAIN1 - структура изделия, дерево

Это требует self-join - на схеме я его не вижу.

Serg197311
Таблица MAIN1
Code
OWN код узла и его вышестоящий код - для создания дерева изделия

Не понял. В смысле Code - это код узла, а OWN - код его родителя?ДА Если так - где self-join связь?
...

Честно сказать - про self-join не слышал в таком контексте
Дерево строится на основании связи code-own..... оно строится..... 15000 поз - 3-5 сек.... Меня устраивает, что не так?



Akina

Serg197311
sernn - уникальный код главного изделия(главной сборки)
Это - переопределение, главное изделие может быть получено запросом по дереву.

Если убрать sernn запросом по дереву можно получить головную позицию(code по MAIN1) -например 186211. В другой таблице есть информация о том, что наше главное изделие с внутренним номером( sernn)=56 будет смонтировано на изделии заказчика № ХХХХХХ
Как связать эту информацию? Как отобрать необходимые 15-20000 записей именно для этого главного изделия для построения дерева и для других операций? У меня это реализовано, работает быстро, дает мне все нужные мне возможности.
Можно ли сделать по другому - наверное можно, но для этого надо понять что это мне даст в итоге


Akina
Serg197311
codever - уникальный код детали

Узел и деталь - это две отдельные сущности. Как они оказались в одной таблице?...

А вот это, Akina, определяется не Вашим мнением, основанном на безусловно большом опыте, а бизнеслогикой и имеющимися на предприятии в данный момент реальностями. Данная модель данных разрабатывалась под них и им соответствует. В детали здесь вдаваться не буду ибо просто не имею права



Akina
Дальше можно уже не смотреть...
Ваше право
Зы - на всякий случай напишу - уже организована и действует передача ресурсных спецификаций и маршрутных карт в ЕРП систему.
...
Рейтинг: 0 / 0
Целостность данных
    #40055183
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdku
Serg197311,
Из того что Вы написали:почему не УЗЛЫ 1:М ДЕТАЛИ 1:М ПРОЦЕСС

Вот этого я не понял....

sdku
Может я чё не понял,поясните:собирается узел состоящий из деталей изготовляемых по разным процессам.Вы хотите получать полную информацию об узле(состав,по каким процессам изготовлены детали кто,что,где и т.д)

Вот это - понял. Все именно так, как написано
...
Рейтинг: 0 / 0
Целостность данных
    #40055192
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdku
Serg197311,
Из того что Вы написали:почему не УЗЛЫ 1:М ДЕТАЛИ 1:М ПРОЦЕСС

АА, понял
Типа есть таблица узлы, есть таблица детали и есть таблица - процессы? И они связаны по ключевым полям?
А в сборочном чертеже например есть 15 сборочных единиц(узлов) и 25 разных деталей. В разные таблицу их пихать?
А в тех сборочных единицах также есть сборочные единицы и детали. И так на 8-15 уровней вглубь
Я не представляю как будет работать в этих условиях предложенная вами схема...


А на каждую деталь может быть несколько разных процессов, которые используются в зависимости от конкретных условий, если сделать прямую связь от узла в MAIN1 к процессу - то на каждый узел придется создавать новый процесс и от этого база данных раздуется неимоверно. А я сейчас имею возможность использовать ранее разработанные процессы без лишнего увеличения объема базы, и также одновременно использовать несколько процессов на одну деталь
...
Рейтинг: 0 / 0
Целостность данных
    #40055193
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serg197311,
если вторая часть моего сообщения "именно так",то почему не наблюдается таблица ДЕТАЛИ? Из ЧЕГО собирается узел?
Serg197311
Есть 3 таблицы
tprcs - процессы и их описание
MAIN1 - структура изделия, дерево
spztmp - описывает какой процесс назначен для выполнения на эту деталь на этом изделии...(организация связи М:М)
...
Рейтинг: 0 / 0
Целостность данных
    #40055196
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdku
Serg197311,
если вторая часть моего сообщения "именно так",то почему не наблюдается таблица ДЕТАЛИ? Из ЧЕГО собирается узел?

Потому что я ее не показал. Там вообще около 70 разных таблиц - что всех показывать?
Тут вон три таблицы показал - кипеша на 2 страницы и все не по существу вопроса.
Блин - как а анекдоте - пока ж*пу не покажешь - туалетную бумагу тебе не продадут.....
Все, дальнейшее обсуждение структуры только после того как кто-нибудь знающий поможет мне составить инструкцию ALTER TABLE
...
Рейтинг: 0 / 0
Целостность данных
    #40055207
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гляньте какие системы есть в автомобиле из скольких узлов\агрегатов они состоят и из каких деталей состоят последние.И тут возникает ДВА интересных вопроса:
1.Необходимо узнать из каких деталей состоит СИСТЕМА автомобиля?
2. из каких деталей состоят узлы входящие в СИСТЕМУ?
Первое и второе таки две большие разницы и без четкой постановки задачи и соответствующего ей структурирования (может быть довольно много степеней вложенности-мне на практике попадалось максимум 5-единожды-не так страшен чёрт как его малюют\не боги горшки обжигают) данных ACCESS не "победить"
...
Рейтинг: 0 / 0
Целостность данных
    #40055214
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdku
Гляньте ****
Первое и второе таки две большие разницы

При всем уважении..... Ну нет у меня никакого желания и времени дискутировать о почти философских категориях в отвлеченном смысле....
Я знаю одно - моя схема работает и дает нужную информацию в нужном объеме... А как я там это называю - деталь, узел, сборочная единица - без разницы
...
Рейтинг: 0 / 0
Целостность данных
    #40055218
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serg197311

А в сборочном чертеже например есть 15 сборочных единиц(узлов) и 25 разных деталей. В разные таблицу их пихать? Таки ДА(узлы и подчиненная ей детали и подчиненная ей процессы)
А в тех сборочных единицах также есть сборочные единицы и детали. И так на 8-15 уровней вглубь(система-агрегат-узел-деталь- процесс? :4-5 степеней вложенности)
Я не представляю как будет работать в этих условиях предложенная вами схема...(нормально будет работать-развивайте воображение)


А на каждую деталь может быть несколько разных процессов(тбл.ПроцДеталей), которые используются в зависимости от конкретных условий, если сделать прямую связь от узла в MAIN1 к процессу(тбл.ПроцУзлов) - то на каждый узел придется создавать новый процесс (с какого перепугу-выберите из тех что есть) и от этого база данных раздуется неимоверно(я так думаю что Вы не видели хорошо спроектированные БД в 1-1,5 ГБ - ну а при значительно больших объемах пользовать ACCESS очень не ACE\невозможно) . А я сейчас имею возможность использовать ранее разработанные процессы(пусть их для детали 10-20,деталей 1000-итого 10-20 тысяч записей-очень даже приемлимо тем более что тбл. справочник и значительного роста объема не будет)без лишнего увеличения объема базы, и также одновременно использовать несколько процессов на одну деталь
...
Рейтинг: 0 / 0
Целостность данных
    #40055222
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sdku - Я ничо в жизни не видел, ничо не знаю, перед вашей мудростью преклоняюсь....
Сделайте пожалуйста такое огромное одолжение..... Помогите ALTER TABLE написать....
Или свалите в туман со своим флудом
...
Рейтинг: 0 / 0
Целостность данных
    #40055224
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можете это глянуть
...
Рейтинг: 0 / 0
Целостность данных
    #40055226
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разрешите свалить,мой генерал!!!!
Успехов в сизифовом труде!
...
Рейтинг: 0 / 0
Целостность данных
    #40055230
DarkMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdku
Разрешите свалить,мой генерал!!!!
Успехов в сизифовом труде!

+100500
P.S У человека есть всего два мнения , одно свое , а другое неправильное.
...
Рейтинг: 0 / 0
Целостность данных
    #40055241
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMan
P.S У человека есть всего два мнения , одно свое , а другое неправильное.

У меня есть одно и точно правильное мнение - я нахожусь на Русском форуме, где вместо ответа на вопрос "как это сделать" тебе сначала докажут что это тебе не надо и ты вообще ничего не знаешь.
Вот в меру сил и борюсь с этой особенностью
ЗЫ а про то что могут быть другие глобальные решения которые будут работать(читай - правильные) - я выше писал. Но мое - уже работает и поэтому оно тоже - правильное
...
Рейтинг: 0 / 0
Целостность данных
    #40055247
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdku
Разрешите свалить,мой генерал!!!!
Успехов в сизифовом труде!

Эх! кто ж мне теперь про ALTER TABLE расскажет поможет-то...... Так и зачахну видать......
...
Рейтинг: 0 / 0
Целостность данных
    #40055253
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serg197311

Эх! кто ж мне теперь про ALTER TABLE расскажет поможет-то...... Так и зачахну видать......
Нравятся мне такие "персонажи" которым говорят что на 0 делить нельзя(надо менять структуру)а он повторяет "ну как разделить на 0"?
Serg197311
Но мое - уже работает и поэтому оно тоже - правильное

немного не так:когда Вы осуществите свю "хотелку" тогда будете говорить что это все правильноюА пока это те самые грабли о которых говорил уважаемый Akina
Молчу...молчу...Свалил так свалил..
...
Рейтинг: 0 / 0
Целостность данных
    #40055254
DarkMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serg197311
Вот в меру сил и борюсь с этой особенностью

Да осилит дорогу идущий !!!!
...
Рейтинг: 0 / 0
Целостность данных
    #40055263
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serg197311
кто ж мне теперь про ALTER TABLE расскажет поможет-то..
рассказывать - это навряд ли (читай сам), а поможет... возможно, когда будет время и тестовый пример.
...
Рейтинг: 0 / 0
Целостность данных
    #40055269
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HELP: "Команда ALTER TABLE используется для добавления, удаления или модификации колонки в уже существующей таблице."
Изменять структуру таблицы в работающей БД это круто-где уж нам убогим до этого додуматься....
...
Рейтинг: 0 / 0
Целостность данных
    #40055272
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdku
Нравятся мне такие "персонажи" которым говорят что на 0 делить нельзя(надо менять структуру)а он повторяет "ну как разделить на 0"?

Да уж, дай спокойно зачахнуть
...
Рейтинг: 0 / 0
Целостность данных
    #40055273
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serg197311
sdku
Молчу...молчу...Свалил так свалил..

Да уж, дай спокойно зачахнуть
...
Рейтинг: 0 / 0
Целостность данных
    #40055281
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Панург
Serg197311
кто ж мне теперь про ALTER TABLE расскажет поможет-то..
рассказывать - это навряд ли (читай сам), а поможет... возможно, когда будет время и тестовый пример.

Панург, дайте пож почту какую-нибудь.... скину тестовый пример. Здесь не хотелось бы - опять волна флуда пойдет.....
...
Рейтинг: 0 / 0
Целостность данных
    #40055387
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdku
немного не так:когда Вы осуществите свю "хотелку" тогда будете говорить что это все правильноюА пока это те самые грабли о которых говорил уважаемый Akina
Молчу...молчу...Свалил так свалил..

Ты The Bill. На всякий уточню - я не программист, а уж тем более нанятый. Я начальник технологического отдела.( Это не к понтам, а что бы это чудо наконец отвалило в туман и не мешало решать реальные проблемы) Я сам эту систему пишу, я же и главный пользователь и обслуживать ее кто-то кроме меня будет только если меня с должности уволят(чего в принципе никогда нельзя исключить).
...
Рейтинг: 0 / 0
Целостность данных
    #40055389
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serg197311
кто ж мне теперь про ALTER TABLE расскажет поможет-то

Я этой приблудой не пользовался, но прочитал про это у мелко софта...
И мне кажется что это тупик, обычно Панург выдает на гора, если есть что выдавать...
- ALTER TABLE это грубо изменить таблицу (не схему данных, ни две, ни три таблицы).
- Check Constraint это контрольное ограничение на ключ, поле... в данном случае оно идеально на codever в spztmp, которого там нет (а если оно там будет, то зачем тогда козе баян)...
- И самое главное Check Constraint не предотвращает запись не того и не туда, оно возникает тогда, когда это уже произошло... Я думаю Акина именно это называл "полем граблей"

Сэр, готовьте пример Панургу, будем делать ставки, аж интересно стало...
...
Рейтинг: 0 / 0
Целостность данных
    #40055390
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vmag

Сэр, готовьте пример Панургу, будем делать ставки, аж интересно стало...

Да приготовил уже - сам готов и поставить и проставиться если что))
...
Рейтинг: 0 / 0
Целостность данных
    #40055393
DarkMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serg197311
Я начальник технологического отдела

С этого и надо было начинать.
Пункт 1- Начальник всегда прав.
Пункт 2 - Если начальник не прав , смотри пункт 1 .
...
Рейтинг: 0 / 0
Целостность данных
    #40055580
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vmag
Check Constraint это контрольное ограничение на ключ, поле
есть и на таблицу
...
Рейтинг: 0 / 0
Целостность данных
    #40055581
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serg197311
Панург, дайте пож почту какую-нибудь...
три таблицы с тремя (или сколько там нужно для иллюстрации) полями и немного фейковых данных можно и сюда положить.
...
Рейтинг: 0 / 0
Целостность данных
    #40055587
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Панург
Serg197311
Панург, дайте пож почту какую-нибудь...
три таблицы с тремя (или сколько там нужно для иллюстрации) полями и немного фейковых данных можно и сюда положить.

Выкладываю
...
Рейтинг: 0 / 0
Целостность данных
    #40055593
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serg197311
Выкладываю
попробуй
...
Рейтинг: 0 / 0
Целостность данных
    #40055624
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Панург#22297855]
Serg197311
Выкладываю
попробуй[/quoВ] примере - ограничение накладывается. В рабочей базе - та же ошибка что я на первой стр писал.Буду разбираться. Спасибо огромное в любом случае!
...
Рейтинг: 0 / 0
Целостность данных
    #40055627
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serg197311
В рабочей базе - та же ошибка что я на первой стр писал.Буду разбираться.
на первой странице ( 22297095 ) ошибка из-за непарности скобок. Про само условие умолчу.
С этим ограничением в примере всё просто - пока соблюдается условие всё будет сохраняться и добавляться. Возьми запрос и посмотри, он не должен выводить записи.
...
Рейтинг: 0 / 0
Целостность данных
    #40055629
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serg197311, кстати, в твоём примере есть возможность получить срабатывание ограничения при добавлении или редактировании записи, если в существующих и уже связанных в spztmp записях MAIN1 или tprcs позже сменят значение codever.
...
Рейтинг: 0 / 0
Целостность данных
    #40055764
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Панург
Serg197311, кстати, в твоём примере есть возможность получить срабатывание ограничения при добавлении или редактировании записи, если в существующих и уже связанных в spztmp записях MAIN1 или tprcs позже сменят значение codever.

В существующих обработках на данный момент нигде не предусмотрено изменений полей codever - ни в MAIN1 ни в tprcs.
Все изменения проводятся через удаление записи и добавление новой(естественно - с учетом связей). В spztmp вообще ни одно поле не изменяется - только удаление или добавление
Так что если ограничение сработает на добавление записи в spztmp - то это будет именно то, чего и добивались.
...
Рейтинг: 0 / 0
Целостность данных
    #40055781
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все проверил, допилил - БИНГО! Работает!!!!
обкатаю на резервных копиях, потом подумаю о вставке в рабочую базу!
Одно не могу понять..... почему
Код: sql
1.
WHERE MAIN1.codever<>tprcs.codever=0

- работает,
а
Код: sql
1.
WHERE MAIN1.codever<>tprcs.codever)=true

- нет.....
...
Рейтинг: 0 / 0
Целостность данных
    #40055804
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serg197311
Одно не могу понять..... почему
Код: sql
1.
WHERE MAIN1.codever<>tprcs.codever=0


- работает,
а
Код: sql
1.
WHERE MAIN1.codever<>tprcs.codever)=true


- нет.....
но вообще то
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
ALTER TABLE spztmp ADD CONSTRAINT CheckVers CHECK 
(
(
SELECT spztmp.CODE 
FROM (spztmp LEFT JOIN MAIN1 ON spztmp.codm1 = MAIN1.code) LEFT JOIN tprcs ON spztmp.cdtp = tprcs.code 
WHERE MAIN1.codever<>tprcs.codever
)=0
)

как бэ так должно быть, т.е. запрос должен возвращать 0 записей, если нет, то сработает запрет. Обрати внимание на скобки.
...
Рейтинг: 0 / 0
Целостность данных
    #40055812
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем - спасибо огромное Панургу! Ограничение работает точно так как я и хотел! При попытке добавить запись с неправильным codever в spztmp - ругается! При попытке изменить(хоть такого по логике быть никак не должно) неправильным образом - то же ругается!
Зы - на скобки конечно обратил уже внимание, это сюда она попала случайно, пробовал я без нее
...
Рейтинг: 0 / 0
Целостность данных
    #40055857
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serg197311
При попытке добавить запись с неправильным codever в spztmp - ругается!


В spztmp таки добавили поле codever...
Я когда схему открыл из примера 2, увидел в В spztmp поле codever, дальше смотреть не стал...
Оказывается все-таки налепили констрейнов, а просто связи сделать, не ???
Зачем козе баян ?
...
Рейтинг: 0 / 0
Целостность данных
    #40055864
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vmag,

не, не туда глянул... не добавили, сорри...
мдя... поля на схеме нечто, Панург немного переставил местами таблицы, я даже этого не заметил,
думал что проблемная внизу, а она уже справа...
...
Рейтинг: 0 / 0
Целостность данных
    #40055875
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vmag
Панург немного переставил местами таблицы
ничего я не переставлял
...
Рейтинг: 0 / 0
Целостность данных
    #40055883
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vmag
Serg197311
При попытке добавить запись с неправильным codever в spztmp - ругается!


В spztmp таки добавили поле codever...

Да это я опять не совсем внятно написал....С неправильным codever надо было написать с разными codever в MAIN1 и tprcs...
Извините уж.....
...
Рейтинг: 0 / 0
Целостность данных
    #40056783
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Панург, снова вопрос...
Хочу сделать еще один индекс на табл MAIN1
Код: sql
1.
2.
3.
4.
SQL = "ALTER TABLE MAIN1 ADD CONSTRAINT Crt1 CHECK " & _
"(SELECT MAIN1_1.codever " _
& " FROM MAIN1 INNER JOIN MAIN1 AS MAIN1_1 ON MAIN1.OWN = MAIN1_1.code " _
& " WHERE (((MAIN1_1.codever)=[MAIN1]![codever]))=0)"



Смысл - запрещение появления в структуре подчинения одной детали самой себе - то есть что бы codever в вышестоящей и подчиненной записях был разный

Ругается - Crt1 не является индексом данной таблицы...

В табл есть еще 2 индекса, созданных через конструктор таблиц
codever - на сочетание OWN,sernn и codever
Primary key
...
Рейтинг: 0 / 0
Целостность данных
    #40056793
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serg197311
Хочу сделать еще один индекс на табл MAIN1
для начала, это не индекс. Далее - ты не читаешь моих сообщений.
...
Рейтинг: 0 / 0
Целостность данных
    #40056842
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Панург
. Далее - ты не читаешь моих сообщений.

Да читаю.... Только понять до конца наверное не могу..... Ткни еще раз пож - что я пропустил...
...
Рейтинг: 0 / 0
Целостность данных
    #40056843
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serg197311
Да читаю.... Только понять до конца наверное не могу.....


течь из трубы нужно устранять, а не подставлять тазики...
Не настораживает, что при вставке для контроля соответствия нужно использовать select + join ?
...
Рейтинг: 0 / 0
Целостность данных
    #40056847
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serg197311
Только понять до конца наверное не могу...
Чего там понять? Два предложения и запрос, который я для наглядности мало того, что отформатировал, так ещё и цветом обозначил.
Скобки посчитать не можешь? И разобраться куда какая часть входит?
...
Рейтинг: 0 / 0
Целостность данных
    #40056848
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vmag
течь из трубы нужно устранять, а не подставлять тазики...

Так... План у меня такой, вызванный не тем что я не имею другого и более надежного решения, а тем что для его применения надо все поменять в конструкторском отделе сначала, а этого я сделать пока не могу. Если я когда-нибудь я смогу это сделать - у меня уже готово более строгое и надежное решение. Сейчас - вынужден подставлять тазики

vmag
Не настораживает, что при вставке для контроля соответствия нужно использовать select + join ?

проясни, скорее всего действительно не понимаю...
...
Рейтинг: 0 / 0
Целостность данных
    #40056853
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Панург
Чего там понять? Два предложения и запрос, который я для наглядности мало того, что отформатировал, так ещё и цветом обозначил.
Скобки посчитать не можешь? И разобраться куда какая часть входит?

Черт... И правда - снова скобки... Получилось, опять спасибо!
...
Рейтинг: 0 / 0
Целостность данных
    #40056857
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vmag
Не настораживает, что при вставке для контроля соответствия нужно использовать select + join ?
А что должно настораживать? Если у тебя иерархические данные, то как ты обеспечишь контроль соответствия некоторых атрибутов?
...
Рейтинг: 0 / 0
Целостность данных
    #40056859
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да блин - сначала ругался что ошибка синтаксиса, а потом стал ругаться что не индекс.... вот я и подумал что не в синтаксисе дело...
...
Рейтинг: 0 / 0
75 сообщений из 75, показаны все 3 страниц
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Целостность данных
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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