|
как? реализовать связь "много-ко-многим"
|
|||
---|---|---|---|
#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 |
|
|
start [/forum/topic.php?fid=40&msg=39398500&tid=1561724]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
60ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
others: | 285ms |
total: | 437ms |
0 / 0 |