|
Целостность данных
|
|||
---|---|---|---|
#18+
Есть 3 таблицы tprcs - процессы и их описание MAIN1 - структура изделия, дерево spztmp - описывает какой процесс назначен для выполнения на эту деталь на этом изделии уникальный номер детали - codever Есть ли возможность какими-нибудь ключами, индексами или еще как обеспечить чтобы при занесении в spztmp записи о назначении процесса значения codever в MAIN1 и tprcs были одинаковыми? Пока все решается проверкой через код, но может быть можно и по другому? PS - очень прошу, не надо вопросов зачем мне это надо и почему все организовано так а не иначе ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2021, 10:17 |
|
Целостность данных
|
|||
---|---|---|---|
#18+
Serg197311 Есть ли возможность какими-нибудь ключами, индексами или еще как обеспечить чтобы при занесении в spztmp записи о назначении процесса значения codever в MAIN1 и tprcs были одинаковыми? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2021, 10:50 |
|
Целостность данных
|
|||
---|---|---|---|
#18+
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, страшного ничего нет, просто нужно иметь это ввиду... Я к чему? Топик называется Целостность данных... ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2021, 12:13 |
|
Целостность данных
|
|||
---|---|---|---|
#18+
vmag Тут алгоритм по формированию codever на 100 % зависит от схемы БД... Это все то же к тому что топик называется "целостность данных" а левая связь без неё,что может привести к ошибкам и появлению "бесхозных" записей ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2021, 13:35 |
|
Целостность данных
|
|||
---|---|---|---|
#18+
Панург да. Пробуй поработать с ограничениями (CHECK CONSTRAINT ). Спасибо.... буду пробовать, но пока совсем не понимаю как.... ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2021, 13:57 |
|
Целостность данных
|
|||
---|---|---|---|
#18+
Serg197311 Спасибо.... буду пробовать, но пока совсем не понимаю как.... Serg197311 Есть ли возможность какими-нибудь ключами, индексами или еще как обеспечить чтобы при занесении в spztmp записи о назначении процесса значения codever в MAIN1 и tprcs были одинаковыми? Выкинь нахрен codever из MAIN1 и tprcs и вставь его в одном экземпляре в spztmp раз оно одинаково... Это просто очевидно... ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2021, 19:21 |
|
Целостность данных
|
|||
---|---|---|---|
#18+
Serg197311 Спасибо.... буду пробовать, но пока совсем не понимаю как.... Попробуйте для начала дать нормальные и понятливые названия таблицам и полям. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2021, 20:08 |
|
Целостность данных
|
|||
---|---|---|---|
#18+
DarkMan Serg197311 Спасибо.... буду пробовать, но пока совсем не понимаю как.... Попробуйте для начала дать нормальные и понятливые названия таблицам и полям. После каждого этапа разработки я документирую все наименования полей, таблиц, их назначения и тд(модули-функции переменные в функциях). Мне обозначения понятны, в документации описаны, не вижу ни малейшей необходимости что-то менять. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2021, 06:53 |
|
Целостность данных
|
|||
---|---|---|---|
#18+
vmag Выкинь нахрен codever из MAIN1 и tprcs и вставь его в одном экземпляре в spztmp раз оно одинаково... Это просто очевидно... Это неочевидно. Более того - невозможно. И не относится к теме данного топика уж точно. Буду очень благодарен, если кто-нибудь поможет вместо обсуждения структуры составить инструкцию ALTER TABLE ADD CONSTRAINT... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2021, 06:57 |
|
Целостность данных
|
|||
---|---|---|---|
#18+
Serg197311 Мне обозначения понятны, в документации описаны, не вижу ни малейшей необходимости что-то менять. хотя СОСТАВ ИЗДЕЛИЯ моя основная задача - у меня не возникло желания сопоставлять ваши обозначения со своими, что-бы понять суть вопроса ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2021, 07:36 |
|
Целостность данных
|
|||
---|---|---|---|
#18+
Serg197311 Есть ли возможность какими-нибудь ключами, индексами или еще как обеспечить чтобы при занесении в spztmp записи о назначении процесса значения codever в MAIN1 и tprcs были одинаковыми? Второе, требующее анализа и изменения структуры - заново провести анализ. Если появилось требование безуслов6ного соответствия - значит, codever является атрибутом либо сущности из tprcs, либо сущности из MAIN1, и должно присутствовать только там, а для сущности другой таблицы оно должно получаться по связи. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2021, 08:13 |
|
Целостность данных
|
|||
---|---|---|---|
#18+
to ПЕНСИОНЕРКА - Хорошо Таблица MAIN1 Code OWN код узла и его вышестоящий код - для создания дерева изделия sernn - уникальный код главного изделия(главной сборки) codever - уникальный код детали qt - количество деталей в узле остальные поля ИМХО несущественны для решаемой задачи Таблица tprcs CODE - уникальный код процесса CODEVER - уникальный номер детали, для которой создан процесс Остальное - несущественно Таблица spztmp CODE - уникальный код записи, в дальнейшем нигде не используется, подумываю удалить CODM1 - CODE из таблицы MAIN1 cdtp - код назначенного к выполнению для этой детали именно в этой позиции общего дерева изделия процесса остальное несущественно Процессов (CODE из tprcs) может быть несколько для одной и той же детали(codever) На деталь из сборки(code из MAIN1) процесс может быть не назначен, назначен один или назначено несколько процессов Цель вопроса - предотвратить назначение процессов, разработанных для другой детали. Как я уже писал - программно через запросы и код я это отслеживаю, но хотелось бы использовать возможности SQL и заодно научиться новому.... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2021, 08:15 |
|
Целостность данных
|
|||
---|---|---|---|
#18+
Akina Первое, очевидное, решение - создание уникального индекса (code, codever) и связывание таблиц именно по этому выражению, а не просто по (code).. На той схеме, что вначале видно, что связь именно по ключевым полям Akina codever является атрибутом либо сущности из tprcs, либо сущности из MAIN1, и должно присутствовать только там, а для сущности другой таблицы оно должно получаться по связи. На той схеме, что сверху я не показал много таблиц, и в честности таблицу VERS с ключевым уникальным полем CODE (codever во всех остальных таблицах), по которому и осуществляется связь с ними Надеюсь, что из поста выше станет понятно, почему codever присутствует и в табл MAIN1 и и в TPRCS. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2021, 08:28 |
|
Целостность данных
|
|||
---|---|---|---|
#18+
sdku а левая связь без неё,что может привести к ошибкам и появлению "бесхозных" записей Картинка эту я нарисовал для этой темы и пропустил при рисовании , в реальности там правильная связь, такая же как и правая ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2021, 08:34 |
|
Целостность данных
|
|||
---|---|---|---|
#18+
Serg197311 После каждого этапа разработки я документирую все наименования полей, таблиц, их назначения и тд(модули-функции переменные в функциях). Мне обозначения понятны, в документации описаны, не вижу ни малейшей необходимости что-то менять. А если кто то будет поддерживать проэкт после Вас ? Месяц сидеть и разбираться с документацией ? Железная логика , даже нет аргументов. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2021, 09:10 |
|
Целостность данных
|
|||
---|---|---|---|
#18+
DarkMan Железная логика , даже нет аргументов. Мы что сейчас обсуждаем? Спасибо за информацию, но я был бы вам значительно более благодарен, если бы вы помогли реально, а не переводили тему непонятно куда и непонятно зачем. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2021, 09:24 |
|
Целостность данных
|
|||
---|---|---|---|
#18+
Serg197311 если бы вы помогли реально, I am sorry , но лично я не собираюсь копаться в Ваших дебрях и иероглифах . Если Вам советуют изменить не только названия , но и структуру базы данных . Все советы Вы игнорируете . Google Вам в помощь . !!! ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2021, 09:38 |
|
Целостность данных
|
|||
---|---|---|---|
#18+
DarkMan I am sorry , но лично я не собираюсь копаться в Ваших дебрях и иероглифах . Darkman, Я задал простой в общем вопрос, точно описал какие поля, где что и как. Не надо тут копаться нигде, не надо обсуждать названия полей, не надо обсуждать структуру базы - вопрос касается только 3-х таблиц. ЗЫ если не знаете, как помочь реально, то и правда, лучше здесь не писать, не оффтопить. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2021, 09:50 |
|
Целостность данных
|
|||
---|---|---|---|
#18+
Serg197311 Картинка эту я нарисовал для этой темы и пропустил при рисовании , в реальности там правильная связь, такая же как и правая Вот видите, вы нарисовали на доске кучу граблей изначально, поэтому и весь разговор до этого был только о них... Serg197311 На той схеме, что сверху я не показал много таблиц, и в честности таблицу VERS с ключевым уникальным полем CODE (codever во всех остальных таблицах), по которому и осуществляется связь с ними Надеюсь, что из поста выше станет понятно, почему codever присутствует и в табл MAIN1 и и в TPRCS. Теперь понятно... Тогда наоборот - добавьте свой codever ещё и в spztmp и связи между этими таблицами делайте по codever а не по ключам. Если сумеете, то можете оставить и старые связи и добавить новые... если будет связь по codever, то вот эта Цель Serg197311 Цель вопроса - предотвратить назначение процессов, разработанных для другой детали. Превратится в обязательное условие при добавлении в spztmp... И да... вот это зря: Serg197311 Таблица spztmp CODE - уникальный код записи, в дальнейшем нигде не используется, подумываю удалить В связующей таблице уникальный код делает элементарным удаление нужной записи, особенно если их более одной, а нужно удалить именно N - ную в списке, которая выделена... Если ключ есть, то после выделения - ты сидишь прямо на нём сейчас... Естественно связь по codever будет такой как у вас нарисована левая связь (это о Целосности, каскадном удалении и т.д.) лучше попробовать совместить... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2021, 11:31 |
|
Целостность данных
|
|||
---|---|---|---|
#18+
vmag Вот видите, вы нарисовали на доске кучу граблей изначально, поэтому и весь разговор до этого был только о них...... Mea culpa... confiteor... vmag Тогда наоборот - добавьте свой codever ещё и в spztmp и связи между этими таблицами делайте по codever а не по ключам. Если сумеете, то можете оставить и старые связи и добавить новые... если будет связь по codever, то вот эта Цель Serg197311 Цель вопроса - предотвратить назначение процессов, разработанных для другой детали. Превратится в обязательное условие при добавлении в spztmp...... Думал про подобное - это действительно самый простой выход. НО очень хотелось(хочется:)) ADD(CHECK) CONSTRAINT понять и научится применять... vmag И да... вот это зря: Serg197311 Таблица spztmp CODE - уникальный код записи, в дальнейшем нигде не используется, подумываю удалить В связующей таблице уникальный код делает элементарным удаление нужной записи, особенно если их более одной, а нужно удалить именно N - ную в списке, которая выделена... Если ключ есть, то после выделения - ты сидишь прямо на нём сейчас... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2021, 11:38 |
|
Целостность данных
|
|||
---|---|---|---|
#18+
Попробовал так Код: sql 1. 2.
Выдает ошибку - Ошибка синтаксиса в предложении ограничения CHECK №№ -217217900 Кто поможет разобраться? Зы - простые CONSTRAINTы научился создавать и удалять ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2021, 08:39 |
|
Целостность данных
|
|||
---|---|---|---|
#18+
Serg197311 На той схеме, что вначале видно, что связь именно по ключевым полям Перечитайте ещё раз (или не раз) то, что я написал - до понимания, в чём разница. Serg197311 Надеюсь, что из поста выше станет понятно, почему codever присутствует и в табл MAIN1 и и в TPRCS. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2021, 10:11 |
|
Целостность данных
|
|||
---|---|---|---|
#18+
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) процесс может быть не назначен, назначен один или назначено несколько процессов Я действительно считаю, что поступить по Вашему совету я не могу. Но буду очень Вам благодарен, если Вы объясните мне - как можно сделать по-другому с сохранением требуемых возможностей ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2021, 11:11 |
|
Целостность данных
|
|||
---|---|---|---|
#18+
Akina Serg197311 На той схеме, что вначале видно, что связь именно по ключевым полям Перечитайте ещё раз (или не раз) то, что я написал - до понимания, в чём разница. Приношу извинения за то , что первоначальная картинка не полностью отражала действительность и привожу то как есть на самом деле Далее - ваш текст Первое, очевидное, решение - создание уникального индекса (code, codever) и связывание таблиц именно по этому выражению, а не просто по (code). Что имелось ввиду? Создать уникальный составной индекс для табл TPRCS из code+codever? Что это даст? code и так уникальный и что не заноси в codever индекс не даст никаких ограничений В табл MAIN1 уже есть составной уникальный индекс из codever+own+sernn Связь между таблицами осуществляется по уникальному(счетчик) и ключевому полю Если я все же ошибаюсь, то прошу меня поправить ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2021, 11:21 |
|
Целостность данных
|
|||
---|---|---|---|
#18+
Serg197311 MAIN1 - структура изделия, дерево Это требует self-join - на схеме я его не вижу. Serg197311 Таблица MAIN1 Code OWN код узла и его вышестоящий код - для создания дерева изделия Не понял. В смысле Code - это код узла, а OWN - код его родителя? Если так - где self-join связь? Serg197311 sernn - уникальный код главного изделия(главной сборки) Serg197311 codever - уникальный код детали Узел и деталь - это две отдельные сущности. Как они оказались в одной таблице? Дальше можно уже не смотреть... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2021, 11:27 |
|
|
start [/forum/topic.php?fid=45&fpage=8&tid=1609733]: |
0ms |
get settings: |
10ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
54ms |
get topic data: |
13ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 172ms |
0 / 0 |