|
как? реализовать связь "много-ко-многим"
|
|||
---|---|---|---|
#18+
Доброго время суток! что-то нет не малейшего представления как это сделать, подскажите хоть область математики? которая таким занимается)) имеем: таблица Z(id) - записи - они же значения записи, 1,2,3,4,5 таблица X(id) - 1,2,3,4,5,6,7 таблица Y(id) - 1 таблица XZ(X_id,Z_id) - (1,1),(1,2),(1,3),(2,1),(2,2),(3,1),(4,2),(5,3),(6,4),(7,5) таблица XY(X_id,Y_id) - (1,1),(1,2),(1,3),(1,4),(1,5) И да мне самому стыдно так DDL рисовать)) задача: имею запись y, знаю что у нее в табличной части есть сточки 12345, знаю что в таблице X, есть записи в табличных частях которых есть строчки 123,12,1,2,3,4,5 мне нужно получить записи Х, чтобы значения табличных частей не пересекались, а из тех где пересекаются выбрать максимальное соответствие, т.е. имея 12345 нужно достать, 123,4,5 ! записи 12,1,2,3 попасть не должны! имея 1245 нужно достать, 12,4,5 на всякий случай уточню что таблица X утверждается вначале года, и пару лет изменений не было и не планируется, и содержит она записи 123,12,1,2,3,4..... т.е. 123 выполняется либо целиком 123, либо бьется на 12,3 либо совсем на 1,2,3 все остальные записи с другими не стыкуются. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2017, 11:39 |
|
как? реализовать связь "много-ко-многим"
|
|||
---|---|---|---|
#18+
sdepals, Какой-то поток сознания. Откуда взялись "табличные части" и где они в описании "имеем"? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2017, 11:43 |
|
как? реализовать связь "много-ко-многим"
|
|||
---|---|---|---|
#18+
пытался думать в сторону регулярок но .. думал вот сюда =): select first 1 x.id,count(yz.z_id) from x inner join xz on z.x_id=x.id inner join yz on yz.z_id=xz.z_id group by x.id order by 2 desc нашел 123, как теперь найти 4,5?? таблица XY(X_id,Y_id) - накосячил, там таблица YZ(y_id,z_id) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2017, 11:47 |
|
как? реализовать связь "много-ко-многим"
|
|||
---|---|---|---|
#18+
ну ладно, поток сознания чтоб в предметную область не вникать. есть прививки Дифтерия-Коклюш-Столбняк, Дифтерия-Столбняк, Дифтерия, Коклюш, Столбняк и отдельно Гепатит B Полиомиелит. есть куча вакцин, с помощью которых они могут быть выполнены. можно 1 вакциной выполнить как все 5 так и 4 так и 3 так и 2 так и 1 прививку, задача, зная вакцину, отметить человеку выполнение прививок. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2017, 11:52 |
|
как? реализовать связь "много-ко-многим"
|
|||
---|---|---|---|
#18+
Это называется связь "много-ко-многим", традиционно реализуется через 2 таблицы сущностей и таблицу связей. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2017, 12:51 |
|
как? реализовать связь "много-ко-многим"
|
|||
---|---|---|---|
#18+
sdepals, насколько я помню, связи M-M физически не существует, она реализуется через 1-M - M-1. То есть, даже если case-инструмент позволяет сделать такую связь, при генерировании физической модели он создаст промежуточную таблицу. Например, есть заказы, и есть товары. В одном заказе может быть несколько товаров, и один товар может продаваться в разных заказах. Здесь заказы к товарам это M-M. Но придется создавать промежуточную таблицу "продажи" (или любое другое название), в которой 2 столбца (ПК) - код товара и код заказа. тогда заказы 1 к продажи М, продажи М к товарам 1 Что и обеспечивает конечную связь M-M. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2017, 12:57 |
|
как? реализовать связь "много-ко-многим"
|
|||
---|---|---|---|
#18+
Через 3 таблицу м-м реализуется. Вот только есть ощущение, что автору не нужно м-м. Но можно сделать для этого случая какой-нибудь хэш. Вакцина1 2.3.4. Вакцина2 1.2.3. Вакцина3 4.5.6. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2017, 13:05 |
|
как? реализовать связь "много-ко-многим"
|
|||
---|---|---|---|
#18+
мда согласен... но это пол дела, мне надо исключить из "много-ко-многим" записи в которых есть "пересечения" т.е. имея вакцину АКДС(коклюш,дифтерия,столбняк) - я должен достать только запись из таблицы прививок КДС! Записи ДС,К,Д,С - не удовлетворяют условию. Вопрос как такое условие написать? Более того я вполне понимаю, что возможно неправильно проектирую БД, и сейчас у меня именно так как Вы и описали. Сущность Прививки, сущность вакцины, и регистр(он же табличная часть) для таблицы прививки, где указываю какими вакцинами она может быть выполнена. Но сейчас склоняюсь в сторону того что у сущностей прививки и вакцины должны быть регистры "диагнозов(болезней)", и зная их определять соответствие. Диагнозы точно нужны для других целей отчётности, и я как раз таким образом пытаюсь избавиться от "традиционной таблицы связей" считая её избыточной, даже не для хранения, а для ввода данных пользователем. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2017, 13:09 |
|
как? реализовать связь "много-ко-многим"
|
|||
---|---|---|---|
#18+
После долгих бесед с врачами и вникания в предметную область .... подумал что должна быть связь 1-М, 1 человек много прививок, и вся отчётность работает с прививками! но спустя некоторое время сообразил, врач вводит вакцину 1 раз, е ему надо проставить её в 3 прививки(врач видит список прививок). Сейчас пришел к тому что врач должен вводить вакцины! а в мой регистр 1-М(1 человек много прививок) - должны добавляться прививки для отчётности. НО! внося прививку КДС, я хочу добавить 1 запись, а не все 5 подходящих, если вязать много ко многим. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2017, 13:18 |
|
как? реализовать связь "много-ко-многим"
|
|||
---|---|---|---|
#18+
sdepalsя хочу добавить 1 запись, а не все 5 подходящих Тогда тебе следует различать сущности "прививки" и "привитые болезни". Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2017, 13:30 |
|
как? реализовать связь "много-ко-многим"
|
|||
---|---|---|---|
#18+
Кстати я же говорю так как вы предлагаете так есть сейчас! т.е. есть 3 таблица в которой связаны прививки вакцины, но почему мне это не нравится, предположим у меня есть вакцина КДС, а у пациенту надо сделать прививку ДС! а после этого через год, ему придумают какой нибудь коклюш+гепатит, - и эта прививка ему не выполнена, так как выполнен только коклюш. т.е. в регистре пациент+прививка, я увижу только ДС, и если я буду искать К, я его не найду! т.е. я думаю свести к атомарным записям надежней, чем меняющийся состав прививок.... П.С. хотя на сколько я понимаю ситуация описанная в данном сообщении практически исключена, прививки либо не меняются либо не чаще чем раз в 10 лет, вакцины появляются чаще. Но делаю сейчас то что делаю исходя из соображений "атомарности", хочу знать что выполнено по факту, откуда подберу, то что хочет врач. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2017, 13:34 |
|
как? реализовать связь "много-ко-многим"
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakovsdepalsя хочу добавить 1 запись, а не все 5 подходящих Тогда тебе следует различать сущности "прививки" и "привитые болезни". - так вот я и хочу же, от прививок уйти к привитым болезням. хотя врачу нужны именно прививки а не привитые болезни. Но отображение дело второе, там вопросов нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2017, 13:37 |
|
как? реализовать связь "много-ко-многим"
|
|||
---|---|---|---|
#18+
как редактировать сообщение?) точней я хочу хранить привитые болезни, но пользователю нужно отображать прививки ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2017, 13:39 |
|
как? реализовать связь "много-ко-многим"
|
|||
---|---|---|---|
#18+
sdepalsкак редактировать сообщение?) Ни как. sdepalsточней я хочу хранить привитые болезни, но пользователю нужно отображать прививки А что, со временем одна и та же вакцина может применяться против большего числа болезней? 1. Если НЕТ, то название вакцины "скажет" (её ID) от чего она. 2. Если ДА, то почему бы ей не стать "новой вакциной" в табличке "Вакцины". Тогда ни чего переделывать в будущем не придется. И всё вернется к п.1 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2017, 13:47 |
|
как? реализовать связь "много-ко-многим"
|
|||
---|---|---|---|
#18+
sdepals, Делай как в жизни, это самое правильное. Первая Таблица - это вакцины, Вторая таблица - это прививки, Третья таблица - это связующая между вакцинами и прививками. Например, запись в первой "АКДС" должна иметь трёх детей в связующей таблице, котрые имеют связь с прививками. Чтобы найти какую вакцину нужно применить для определённых прививок, нужен запрос по промежуточной (связующей) таблице. Но это уже дело второе. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2017, 14:03 |
|
как? реализовать связь "много-ко-многим"
|
|||
---|---|---|---|
#18+
sdepalsточней я хочу хранить привитые болезни, но пользователю нужно отображать прививки А что, со временем одна и та же вакцина может применяться против большего числа болезней? 1. Если НЕТ, то название вакцины "скажет" (её ID) от чего она. 2. Если ДА, то почему бы ей не стать "новой вакциной" в табличке "Вакцины". Тогда ни чего переделывать в будущем не придется. И всё вернется к п.1[/quot] Немного не так. Вакцина и кол-во болезней ей привитых не изменится! А вот в прививках которыми "оперируют" врачи, я не уверен. Не исключено, что врач 2 пациентам введет вакцину КДС, но попросит одному отобразить ее как КДС, а другому как ДС+К а ID вакцины скажет мне что ей можно выполнить прививки КДС,ДС,К,Д,С - 5 штук. а отобразить надо только ту где совпало максимальное кол-во диагнозов - КДС. Есть еще Корь,Краснуха,Паротит - которая бьется также, но вроде не видел вакцин пересекающихся между ККП и чем то другим. П.С. но хоть прививки новые и не появляются, новые вакцины штампуют постоянно, и сейчас норма по 3 прививки одной вакциной делать, но уже есть всякие пентаксим - от слова пять, Инфанриксы - Гекса - от слова 6. И вполне возможно со временем будет нормой не тройная а четверная прививка. Есть такая штука календарь вакцинации - стандарт! И там планируют когда чего колоть, сейчас КДС - это одна строчка, а если что-то изменится, то как то не хочется, десяткам клиентов перебивать регистр М-М прививка-вакцина. А вот в случае атомарных болезней ситуация выглядит лучше. Так что всё еще думаю, что от М-М прививка-вакцина, надо избавиться, и как то запросом доставать данные из схемы 1-М:М-1 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2017, 14:13 |
|
как? реализовать связь "много-ко-многим"
|
|||
---|---|---|---|
#18+
KreatorXXIsdepals, Третья таблица - это связующая между вакцинами и прививками. Например, запись в первой "АКДС" должна иметь трёх детей в связующей таблице, котрые имеют связь с прививками. Сейчас именно так и есть: для одной вакцины КДС, в связующей таблице 5 записей КДС,ДС,К,Д,С. Банально удалив из этой таблицы связи вакцины КДС и прививок ДС,К,Д,С - задача будет решена. И я вижу что вы все клоните к этому сценарию )) просто мне кажется что нужно 1-М:М-1. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2017, 14:22 |
|
как? реализовать связь "много-ко-многим"
|
|||
---|---|---|---|
#18+
sdepalsНе исключено, что врач 2 пациентам введет вакцину КДС, но попросит одному отобразить ее как КДС, а другому как ДС+К Должно быть отмечено ID примененной вакцины. И пофех кто, как и в куда там махинирует называет ее. Тогда всегда можно построить связь Вакцина - Болезнь, было или нет, кому, когда и сколько. А то колют экс_кулапы по 5 раз ДифТирит против Ветрянки. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2017, 14:25 |
|
как? реализовать связь "много-ко-многим"
|
|||
---|---|---|---|
#18+
Вообщем в частности из ответа kdv, я понял останавливаюсь на таблице связке вакцина прививка, хорошо! Тогда другой вопрос: имеем таблицу связь вакцина-прививка, и таблицу связь пациент - прививка. И даже в независимости от этого денормализовано храню отдельную таблицу пациент-вакцина. Дальше случается нечто. и в таблице вакцина-прививка, имеющей записи КДС и гепатит, обе эти записи удаляют, и добавляют две новые КД и СГ ? Что делать? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2017, 14:34 |
|
как? реализовать связь "много-ко-многим"
|
|||
---|---|---|---|
#18+
Понятно вы все утверждаете, и мои первые рассуждения, что правильно сделать таблицу связь вакцина-прививка. но вот постом выше описанные действия вводят в тупик! удаляем 3-1 из таблицы связь вакцина-прививка, и меняем на 2-2, и чтоб восстановить данные, зная выполненные прививки, придется сделать нечто, реализующее то что я спросил в первом сообщении. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2017, 14:41 |
|
как? реализовать связь "много-ко-многим"
|
|||
---|---|---|---|
#18+
sdepals, запрети удалять, а апдейты протоколируй. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2017, 14:47 |
|
как? реализовать связь "много-ко-многим"
|
|||
---|---|---|---|
#18+
sdepalsдействия вводят в тупик!Не извивайся ужом и не при против науки. проектируй по букварю типичную связь MxM и запросы станут тривиальными и читаемыми, а не для sql-ex. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2017, 14:49 |
|
как? реализовать связь "много-ко-многим"
|
|||
---|---|---|---|
#18+
sdepalsДальше случается нечто. и в таблице вакцина-прививка, имеющей записи КДС и гепатит, обе эти записи удаляют, и добавляют две новые КД и СГ ? Что делать? А кто сказал удаляют физически? Если врач не видит старую (снятую) вакцину в списке - она для него "удалена"? Значит нужно еще поле "ACT" = 1 активна вакцина, = 0 - ее не показываем персоналу в списке. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2017, 14:49 |
|
как? реализовать связь "много-ко-многим"
|
|||
---|---|---|---|
#18+
sdepalsKreatorXXIsdepals, Третья таблица - это связующая между вакцинами и прививками. Например, запись в первой "АКДС" должна иметь трёх детей в связующей таблице, котрые имеют связь с прививками. Сейчас именно так и есть: для одной вакцины КДС, в связующей таблице 5 записей КДС,ДС,К,Д,С. Банально удалив из этой таблицы связи вакцины КДС и прививок ДС,К,Д,С - задача будет решена. И я вижу что вы все клоните к этому сценарию )) просто мне кажется что нужно 1-М:М-1. Не так. В связующей таблице должно быть три записи, а не пять (к, Д, С). Напиши примерную структуру таблиц "Вакцины" и "Прививки". Связующую нарисую. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2017, 14:56 |
|
как? реализовать связь "много-ко-многим"
|
|||
---|---|---|---|
#18+
sdepalsимеющей записи КДС и гепатит, обе эти записи удаляют, и добавляют две новые КД и СГ ? Что делать? я в этой предметной записи не разбираюсь, но выглядит это как "пациенту удалили аппендицит. А потом вдруг оказалось, что почку". но мне кажется, что у вас проблема с определением сущностей и их связей. sdepalsт.е. имея вакцину АКДС(коклюш,дифтерия,столбняк) - я должен достать только запись из таблицы прививок КДС! Записи ДС,К,Д,С - не удовлетворяют условию. Вопрос как такое условие написать? АКДС - это ОДНА прививка, как я понял, а не 4 (или 3). Другое дело, что такая прививка состоит из частей. 1 человек - много прививок 1 прививка - 1 вакцина? несколько? 1 вакцина - несколько заболеваний. Верно? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2017, 14:58 |
|
как? реализовать связь "много-ко-многим"
|
|||
---|---|---|---|
#18+
Автор взрывает мозг своими сообщениями. Почитай как реализовать м-м и сделай так же. И не надо велосипед изобретать. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2017, 15:59 |
|
как? реализовать связь "много-ко-многим"
|
|||
---|---|---|---|
#18+
Связь многие-ко-многим создается с помощью трех таблиц. Две таблицы – “источника” и одна соединительная таблица. Первичный ключ соединительной таблицы A_B – составной. Она состоит из двух полей, двух внешних ключей, которые ссылаются на первичные ключи таблиц A и B. Это все, что нужно для создания м-м ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2017, 16:05 |
|
как? реализовать связь "много-ко-многим"
|
|||
---|---|---|---|
#18+
kdv, в этой предметной области даже врачи прививки с вакцинами путают. Хотя с точки зрения программиста всё понятно, пример с почкой и аппендицитом не актуален, потому что в любом случае удалены и почка и аппендицит, но сегодня у меня одна бумажка а завтра другая и после завтра третья. которые выводят мне одинаковые данные, но в различных раскладках. 1 человек - много прививок //Да! 1 прививка - 1 вакцина? несколько?//в таблице связи прививки вакцины, много прививок - много вакцин. 1 вакцина - несколько заболеваний. //Да! Привитость(населения) от болезни - кол-во пациентов, полностью прошедших курс вакцинации. Вакцина - продукт, введение в организм пациента которого частично, прививает пациента от разных болезней. Прививка - условная единица придуманная врачами при составлении схемы вакцинации. Полностью пройденная схема вакцинации обеспечивает полную привитость от всех заложенных болезней. 1.Есть документ Национальный календарь вакцинации, выпускается раз в год. В нём "планируется" схема прививок(схема - это возраст-прививка. Схема может меняться! Вашим родителям кололи прививку от оспы, вашим детям от пневмококка, а тем кому до 30 ни того ни другого - вот 3 схемы, и повезло что тут прививки одиночные.) http://birth-info.ru/79/Kalendar-privivok-na-2017-god/ 2. Согласно схеме по календарю врач берет вакцину и вакцинирует пациента! 3. Выдает пациенту регламентную(хотя всем пофиг рисуют по разному) форму - сертификат прививок! Именно прививок! 4. Делают десятки отчётов привитости по диагнозу, и отчёты по выполненным прививкам. Название прививки из календаря - "Первая вакцинация против дифтерии, коклюша, столбняка" Схема вакцинации сейчас КДС V1,КДС V2,КДС V3, КДС R1, ДС R2, ДС R3 где V1...R3 - тупо своеобразная нумерация(порядковый номер). Но первые 4 прививки могут делаться одной вакциной 5,6 другой, - и это всё к тому что вакцины статичны. прививки могут меняться. И я хочу зная вакцину, достать прививки. Di_LIne, спасибо, я даже на полсекунды подумал что проблема решена буду их посылать. Вначале я думал, что в таблице прививки и таблице связи прививки вакцины буду добавлять и удалять записи. В принципе да удалять ничего не надо если были сделаны прививки КДС и гепатит, а сейчас таких прививок нет, а есть КД и С+гепатит. То подделывать не надо ведь реально было по другому и надо вывести как было! Но даже в таком случае у меня будет задача подсветить(уведомить врача) что КД и С+гепатит, делать ненадо! так как ранее вакцинированы "аналогами". Отсюда повторяюсь отвечая Ivan_Pisarevsky, Данные хранятся М:М! но вопрос уже в другом, мне всё равно нужно достать прививки с непересекающимися болезнями, а из тех где болезни пересекаются, выбирать одну! с наибольшим кол-вом пересечений. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2017, 21:25 |
|
как? реализовать связь "много-ко-многим"
|
|||
---|---|---|---|
#18+
KreatorXXI, .fdb приложил. Progger83, молодец но ты опоздал, с м-м определились, все как ты написал так и есть, я спрашиваю, как из м-м удалить связи, добавить другие, и получить "физически" разный но в "сумме" одинаковый результат! ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2017, 21:31 |
|
как? реализовать связь "много-ко-многим"
|
|||
---|---|---|---|
#18+
DDL ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2017, 22:01 |
|
как? реализовать связь "много-ко-многим"
|
|||
---|---|---|---|
#18+
sdepalsKreatorXXI, .fdb приложил. Progger83, молодец но ты опоздал, с м-м определились, все как ты написал так и есть, я спрашиваю, как из м-м удалить связи, добавить другие, и получить "физически" разный но в "сумме" одинаковый результат! Не улавливаю сути вопроса. Удаляем строку из третьей таблицы, связи нет. Что значит физически разный, но в сумме одинаковый? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2017, 22:46 |
|
как? реализовать связь "много-ко-многим"
|
|||
---|---|---|---|
#18+
Progger83Что значит физически разный, но в сумме одинаковый?видимо, речь о замене вакцин с тем, чтобы результат (иммунитет к списку болезней) оставался тем же самым. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2017, 23:04 |
|
как? реализовать связь "много-ко-многим"
|
|||
---|---|---|---|
#18+
sdepalsВообщем в частности из ответа kdv, я понял останавливаюсь на таблице связке вакцина прививка, хорошо! Тогда другой вопрос: имеем таблицу связь вакцина-прививка, и таблицу связь пациент - прививка. И даже в независимости от этого денормализовано храню отдельную таблицу пациент-вакцина. Дальше случается нечто. и в таблице вакцина-прививка, имеющей записи КДС и гепатит, обе эти записи удаляют, и добавляют две новые КД и СГ ? Что делать? прививки разные, но каждая болезнь привита по 1 разу, до и после манипуляций. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2017, 00:01 |
|
как? реализовать связь "много-ко-многим"
|
|||
---|---|---|---|
#18+
sdepalsя спрашиваю, как из м-м удалить связи, добавить другие, и получить "физически" разный но в "сумме" одинаковый результат!"Нет такой проблемы, которую нельзя решить введением ещё одного уровня абстракции". Следовательно, надо сделать несколько связей многие-ко-многим и для каждой такой связи создать отдельную "промежуточную третью таблицу". Можно ли во всём этом не запутаться? Не знаю, но наверное, можно. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2017, 07:44 |
|
как? реализовать связь "много-ко-многим"
|
|||
---|---|---|---|
#18+
sdepals, Посмотрел таблицы. По большому счёту всё правильно. Таблица REG_PRIVIVKI является связующей между REF_PRIVIVKI и REF_VACCINE. Я бы первичный ключ в ней сделал не такой и в каскадном удалении и изменении форейн ключа не уверен. Сейчас вопрос как найти вакцину для определённой прививки? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2017, 15:01 |
|
как? реализовать связь "много-ко-многим"
|
|||
---|---|---|---|
#18+
Наоборот, зная вакцину(ID=9, против всех 6 болезней) найти прививки. В DOC_PATIENT_PLAN_PRIV для пациента 1, видишь прививки (ID - 1,6,7,8) - Коклюш-Дифтерия-Столбняк,Гепатит B,Полиомиелит,Гемофильная инфекция. теперь удали прививки (предположим у них появилось поле IS_HIDE(скрыт) ID - 1,6,7,8) и зная связи вакцина-диагноз-привика напиши запрос, выводящий прививки (ID 9,10) - Коклюш-Дифтерия-Столбняк-Гепатит,Полиомиелит-Гемофильная как у 2 пациента либо как-то используя REG_PRIVIVKI, зная что пациенту были выполнены (ID - 1,6,7,8), выведи (ID 9,10). ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2017, 18:00 |
|
как? реализовать связь "много-ко-многим"
|
|||
---|---|---|---|
#18+
Планы прививок тоже стоило бы добавить, наверное. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2017, 10:47 |
|
как? реализовать связь "много-ко-многим"
|
|||
---|---|---|---|
#18+
sdepalsНаоборот, зная вакцину(ID=9, против всех 6 болезней) найти прививки. В DOC_PATIENT_PLAN_PRIV для пациента 1, видишь прививки (ID - 1,6,7,8) - Коклюш-Дифтерия-Столбняк,Гепатит B,Полиомиелит,Гемофильная инфекция. теперь удали прививки (предположим у них появилось поле IS_HIDE(скрыт) ID - 1,6,7,8) и зная связи вакцина-диагноз-привика напиши запрос, выводящий прививки (ID 9,10) - Коклюш-Дифтерия-Столбняк-Гепатит,Полиомиелит-Гемофильная как у 2 пациента либо как-то используя REG_PRIVIVKI, зная что пациенту были выполнены (ID - 1,6,7,8), выведи (ID 9,10). Ну прививки получить-то просто: Код: sql 1. 2. 3. 4.
Получить прививки, которые не сделаны конкретному пациенту, тоже в общем-то просто: Код: sql 1. 2. 3. 4. 5. 6.
Что-то не так? Ещё какие условия? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2017, 11:56 |
|
как? реализовать связь "много-ко-многим"
|
|||
---|---|---|---|
#18+
норм, а теперь тоже самое не удаляя ID - 1,6,7,8, выведи 9,10. Весь сыр бор затеян с учётом что разные прививки подойдут под условие. и тогда Код: sql 1. 2. 3. 4.
вернёт 1,6,7,8,9,10. - А надо 9,10. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2017, 16:38 |
|
как? реализовать связь "много-ко-многим"
|
|||
---|---|---|---|
#18+
sdepals, Ну давай условия на на прививки (1,6,7,8). Куда они деваются? Сделаны уже? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2017, 17:47 |
|
как? реализовать связь "много-ко-многим"
|
|||
---|---|---|---|
#18+
Условие, раньше были некие прививки 11,12 - неважно какие, сделаны одной вакциной 9! теперь они удалены и вместо них добавлены 1,6,7,8,9,10. аналогом прививок 11,12 являются группы(1,6,7,8) или (9,10). Ты должен выбрать(9,10) по принципу что в них больше всего совпадений, и нет пересечений болезней. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2017, 19:05 |
|
как? реализовать связь "много-ко-многим"
|
|||
---|---|---|---|
#18+
1) Бьём по карману идиота, их удалившего из базы. 2) Восстанавливаем БД из бэкапа. 3) Профит. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2017, 19:09 |
|
как? реализовать связь "много-ко-многим"
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov3) Профит. Категорически не согластный! Не то что лечиться, а даже входить в такое мед. заведение. Кто может дать гарантию, что завтра у тебя лично не найдут родильную горячку? Джером К. ДжеромЯ взял справочник и нашел там все, что мне было нужно, а потом от нечего делать начал перелистывать книгу, просматривая то, что там сказано о разных других болезнях. Я уже позабыл, в какой недуг я погрузился раньше всего, - знаю только, что это был какой-то ужасный бич рода человеческого, - и не успел я добраться до середины перечня "ранних симптомов", как стало очевидно, что у меня именно эта болезнь. Несколько минут я сидел, как громом пораженный, потом с безразличием отчаяния принялся переворачивать страницы дальше. Я добрался до холеры, прочел о ее признаках и установил, что у меня холера, что она мучает меня уже несколько месяцев, а я об этом и не подозревал. Мне стало любопытно: чем я еще болен? Я перешел к пляске святого Витта и выяснил, как и следовало ожидать, что ею я тоже страдаю; тут я заинтересовался этим медицинским феноменом и решил разобраться в нем досконально. Я начал прямо по алфавиту. Прочитал об анемии - и убедился, что она у меня есть и что обострение должно наступить недели через две. Брайтовой болезнью, как я с облегчением установил, я страдал лишь в легкой форме, и, будь у меня она одна, я мог бы надеяться прожить еще несколько лет. Воспаление легких оказалось у меня с серьезными осложнениями, а грудная жаба была, судя по всему, врожденной. Так я добросовестно перебрал все буквы алфавита, и единственная болезнь, которой я у себя не обнаружил, была родильная горячка. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2017, 19:40 |
|
как? реализовать связь "много-ко-многим"
|
|||
---|---|---|---|
#18+
sdepalsтеперь они удаленыВыше уже неоднократно было сказано, что ничего удалять нельзя. Тем более нельзя удалить позицию справочника, на которую ссылаются документы первички, это просто не даст сделать правильная настроенная связка ПК-ФК. На позиции справочника может быть навешен атрибут типа "устарело", "не рекомендуется", "запрещено" и т.п. Не надо пытаться выпутаться из патовой ситуации, надо проектировать так, чтобы туда не попадать. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2017, 20:09 |
|
как? реализовать связь "много-ко-многим"
|
|||
---|---|---|---|
#18+
хорошо! меняем фразу "теперь они удалены" - на фразу "они скрыты" суть не меняется! всё равно надо найти прививки 9,10! добавить! и повесить признак что выполнять не надо, ибо были выполнены аналогом. а запрос Код: sql 1. 2. 3. 4.
вытянет всю таблицу прививок вместо двух. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2017, 12:42 |
|
как? реализовать связь "много-ко-многим"
|
|||
---|---|---|---|
#18+
Ivan_PisarevskyНе надо пытаться выпутаться из патовой ситуации, надо проектировать так, чтобы туда не попадать. Спроектировано именно так, как все 10 человек выше и говорили. С самого начала так спроектировано! Теперь есть ситуация, решение которой никто пока не предложил. И отмазки типо "у вас болит палец а вам лечат ухо" с моей стороны не катят. потому что старые прививки никуда не денутся! и пациенту будут выводиться именно те которые сделаны! Но выводиться будут в "прочее" а на вопрос почему не выполнена актуальная прививка всё равно надо ответить. Для чего и нужен запрос, по вышеописанным критериям. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2017, 12:55 |
|
как? реализовать связь "много-ко-многим"
|
|||
---|---|---|---|
#18+
sdepalsа запрос Код: sql 1. 2. 3. 4.
вытянет всю таблицу прививок вместо двух. Если не осиливаешь как работает запрос, то... Разложи на 2-3 простых SQL-запрсоса и оформи их в процедуру. Времени займешь у других меньше на порядок. (Давно бы уже сделал.) Получишь легко исправляемое и, что важнее, ТЕСТИРУЕМОЕ на правильность решение. 1. ХП - наше фсё! 2. Леворукие криво джоины - зло. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2017, 12:56 |
|
как? реализовать связь "много-ко-многим"
|
|||
---|---|---|---|
#18+
sdepalsСпроектировано именно так, как все 10 человек выше и говорили. С самого начала так спроектировано! Кем спроектировано? Я в ентой фигне участия не принимал и смотрел с явным неодобрением. Другие мемберв - не погружались на 150% в предметную область и формулировали ответы в "общем виде". - Чё за предъявы? Магём и помолчать, нам-то оно нафех не упало.... ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2017, 13:01 |
|
как? реализовать связь "много-ко-многим"
|
|||
---|---|---|---|
#18+
sdepalsна вопрос почему не выполнена актуальная прививка всё равно надо ответить. Sia-Ori1Планы прививок тоже стоило бы добавить, наверное.+1 табличка (пара мастер-деталь) с явно обозначенными периодами актуальности, такой-то список прививок актуален на такой-то период. столкнув с планом прививок и прививки конкретного пациента можно получить некую разницу и таки да, сделать это одним запросом может оказаться "многоэтажно", так что см. хранимые процедуры. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2017, 13:08 |
|
как? реализовать связь "много-ко-многим"
|
|||
---|---|---|---|
#18+
Di_LIne- Чё за предъявы? Ну уж точно не к тебе, тебе только спасибо что хоть посмотрел )) просто людям говоришь, есть две таблицы-сущности, и таблица связи их по ID. И большинство дружно хором говорит сделай Связь многие-ко-многим создается с помощью трех таблиц. Две таблицы – “источника” и одна соединительная таблица. Первичный ключ соединительной таблицы A_B – составной. Она состоит из двух полей, двух внешних ключей, которые ссылаются на первичные ключи таблиц A и B. Это все, что нужно для создания м-м или табличка (пара мастер-деталь) с явно обозначенными периодами актуальности, такой-то список прививок актуален на такой-то период. Очень оригинальные советы )). ХП ближе к делу. И там даже вопросов нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2017, 14:05 |
|
как? реализовать связь "много-ко-многим"
|
|||
---|---|---|---|
#18+
sdepalsхорошо! меняем фразу "теперь они удалены" - на фразу "они скрыты" суть не меняется! всё равно надо найти прививки 9,10! добавить! и повесить признак что выполнять не надо, ибо были выполнены аналогом. а запрос Код: sql 1. 2. 3. 4.
вытянет всю таблицу прививок вместо двух. Хорошо, раз я уже влез, скажи где этот признак "скрыты"? Прямо таблицу скажи и поле. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2017, 14:14 |
|
как? реализовать связь "много-ко-многим"
|
|||
---|---|---|---|
#18+
Да всё тема закрыта, решение перевели в многогранное SP. а поле находится в REF_PRIVIVKI.IS_HIDE не видешь? я тоже не вижу, а оно есть! и доп условие в запросе, никак на алгоритм и выходные данные не повлияет. Код: sql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2017, 14:50 |
|
|
start [/forum/topic.php?all=1&fid=40&tid=1561724]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
55ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
69ms |
get tp. blocked users: |
1ms |
others: | 11ms |
total: | 179ms |
0 / 0 |