|
Фейковый FK
|
|||
---|---|---|---|
#18+
Мужики, вы стаю собак в проектировании съели. Подскажите, как по феншую. Есть табля с пациентами и табля с персоналом. Они все где-то проживают и эти данные надо хранить. Чтобы не городить, как минимум, две отдельные таблички, на ум пришла мысль хранить эти данные в одной Код: sql 1. 2. 3. 4. 5. 6.
и в упомянутых выше двух мастер-табличках создать "неудаляемые" записи с ID=0, а при вставке в TBL_ADDRESS в FK вставлять реальный ID из той таблички, для которой запись создана. Так нормальные люди делают или есть какой-то другое правильное решение с учетом последующего удобства выборки и проч.? ================= Док. Win7 Ultim x64, Deb 7.6 i386 (Deb 8.3 i386): FB 3.0.0.32483, диалект 3, SS(win)/CS(Deb), Lazarus 1.7; FPC 3.1.1, IBX by -Rik-; IBE 2016.4.29.1 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2016, 10:54 |
|
Фейковый FK
|
|||
---|---|---|---|
#18+
Док, Про феншуй не знаю но вот зачем : " DEFAULT 0 NOT NULL" и " мастер-табличках создать "неудаляемые" записи с ID=0" совсем не понял ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2016, 11:04 |
|
Фейковый FK
|
|||
---|---|---|---|
#18+
Минимальная контактная информация и должна быть общей: сегодня персонал, а завтра - уже пациент. Ну или наоборот. А вот уже различающуюся информацию - разделять: для пациента неинтересна специализация, а персоналу не требуется диагноз. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2016, 11:09 |
|
Фейковый FK
|
|||
---|---|---|---|
#18+
Док, по фэншую ты можешь хранить информацию о физических лицах в одной табличке, а в другой табличке по 1:1 с предыдущей, хранить определение "типа" физ.лица - "Персонал"/"Пациент". Тут, конечно, не мешало бы и третью табличку прибабахать - справочник типов физ.лиц, чтобы была фэншуйная нормализация и отсутствие избыточности. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2016, 11:11 |
|
Фейковый FK
|
|||
---|---|---|---|
#18+
m7m, еще раз: если указан адрес проживания пациента, то в FK_PATIENTS будет не 0 , а в FK_PERSONAL будет 0 . Для адреса работника ситуация будет с точностью до наоборот. Если не нравиться DEFAULT, можно в триггер на вставку завернуть ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2016, 11:13 |
|
Фейковый FK
|
|||
---|---|---|---|
#18+
Докm7m, еще раз: если указан адрес проживания пациента, то в FK_PATIENTS будет не 0 , а в FK_PERSONAL будет 0 . Для адреса работника ситуация будет с точностью до наоборот. Если не нравиться DEFAULT, можно в триггер на вставку завернуть а чем null не угодил?? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2016, 11:15 |
|
Фейковый FK
|
|||
---|---|---|---|
#18+
rdb_dev, блин, вроде очевидные вещи, но под этим углом я на архитектуру еще не смотрел. Спасибо, что поднял мне веки открыл глаза ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2016, 11:16 |
|
Фейковый FK
|
|||
---|---|---|---|
#18+
Док, ты всё перевернул с ног на голову. ты перепутал объекты с атрибутами этих объектов. с точностью до наоборот. зы: не проктолог? (шутко!) Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2016, 11:16 |
|
Фейковый FK
|
|||
---|---|---|---|
#18+
Докrdb_dev, блин, вроде очевидные вещи, но под этим углом я на архитектуру еще не смотрел. Спасибо, что поднял мне веки открыл глаза А если уж совсем фэншуйно, то каждое физ.лицо либо где-то работает (id юр.лица из справочника юр.лиц), либо нет (null) и если id юр.лица совпадает с id вашего мед.учреждения, то персонал, иначе - пациент. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2016, 11:25 |
|
Фейковый FK
|
|||
---|---|---|---|
#18+
rdb_devесли id юр.лица совпадает с id вашего мед.учреждения, то персонал, иначе - пациент.Типа, доктору больничный никогда не требуется? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2016, 11:29 |
|
Фейковый FK
|
|||
---|---|---|---|
#18+
Basil A. Sidorov, дело не в больничном, а в том, что персонал облизывают лучше. Так-то любое физ.лицо, будь то "персонал" или "пациент" (не резидент мед.учреждения), обратившееся в мед.учреждение (попавшее в таблицу физ.лиц) уж безоговорочно является пациентом, которому время от времени нужен больничный. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2016, 11:34 |
|
Фейковый FK
|
|||
---|---|---|---|
#18+
Док, бр... Я бы сделал табличку PEOPLE и в ней бы хранил и персонал и пациентов. Только добавил бы в неё поле PEOPLE_KIND для определения что это за чел сотрудник или пациент. А связи сотрудник-пациент в этой табле по идее быть не должно. Один и тот же человек может быть пациентом у нескольких врачей, и наоборот у одного врача может быть много пациентов. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2016, 11:35 |
|
Фейковый FK
|
|||
---|---|---|---|
#18+
Симонов Денисбр... Я бы сделал табличку PEOPLE и в ней бы хранил и персонал и пациентов. Только добавил бы в неё поле PEOPLE_KIND для определения что это за чел сотрудник или пациентА я бы не добавлял: есть первичный ключ, вот его и задействовать в отдельных таблицах для персонала и для пациентов. P.S. Через пару-тройку лет окажется, что человек не просто может менять состояние - он может лечиться, не переставая быть сотрудником. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2016, 11:43 |
|
Фейковый FK
|
|||
---|---|---|---|
#18+
Basil A. Sidorov, пожалуй ты прав ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2016, 11:47 |
|
Фейковый FK
|
|||
---|---|---|---|
#18+
Симонов Денис, тут уже предлагали. Я даже в инет сунулся, рассуждая, как ты Но это Basil A. Sidorovчеловек не просто может менять состояние - он может лечиться, не переставая быть сотрудником пока сбило меня с толку, щас буду думать, стоит ли так заморачиваться в контексте задачи. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2016, 11:55 |
|
Фейковый FK
|
|||
---|---|---|---|
#18+
ДокЕсть табля с пациентами и табля с персоналом. Они все где-то проживают и эти данные надо хранить. Чтобы не городить, как минимум, две отдельные таблички, на ум пришла мысль хранить эти данные в одной А какой смысл вообще выносить место проживания в отдельную табличку? Добавить в основные таблицы по полю "дополнительная информация, включая место проживания в свободной форме" типа CLOB мешает что-то?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2016, 12:05 |
|
Фейковый FK
|
|||
---|---|---|---|
#18+
ДокBasil A. Sidorovчеловек не просто может менять состояние - он может лечиться, не переставая быть сотрудником пока сбило меня с толку, щас буду думать, стоит ли так заморачиваться в контексте задачи. смотря в чем состоит задача... 19274926 19274858 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2016, 12:12 |
|
Фейковый FK
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, как бы да, но, ИМХО, KLADR не помешает. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2016, 12:13 |
|
Фейковый FK
|
|||
---|---|---|---|
#18+
rdb_devИМХО, KLADR не помешает. Ну, если Доку понадобится статистика типа "количество пациента по районам", тогда да, а иначе это только усложнение ввода. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2016, 12:16 |
|
Фейковый FK
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakovмешает что-то? В произвольной форме недостаточно будет, имхо. В более-менее современных МИС сейчас требуется отдельно адрес проживания и адрес прописки (регистрации). rdb_devKLADR не помешает нафиг, я решил, что в базу его пихать не буду, если только рядом положить и отдельным коннектом оттудова данные доставать и писать в свою (скорее для удобства юзверей) rdb_devсмотря в чем состоит задача... клиент для мелко-средних контор и "врачей-фрилансеров" Отсюда и контекст. Универсального софта нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2016, 12:23 |
|
Фейковый FK
|
|||
---|---|---|---|
#18+
ДокВ произвольной форме недостаточно будет, имхо. В более-менее современных МИС сейчас требуется отдельно адрес проживания и адрес прописки (регистрации). Ну так это не исключает произвольную форму: Адрес проживания: Москва, Кремль Адрес прописки: Мухосранск, свалка Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2016, 12:27 |
|
Фейковый FK
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakovэто не исключает произвольную форму хочу оставить потенциальную возможность статобработки "Никогда не знаешь, что придет голову этим пчелам..." (с) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2016, 13:21 |
|
Фейковый FK
|
|||
---|---|---|---|
#18+
Просятся три таблицы: Person(люди), Employee(персонал), Patient(пациенты). Sorry - все, что сверху не читал. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2016, 14:00 |
|
Фейковый FK
|
|||
---|---|---|---|
#18+
HSПросятся три таблицы: Person(люди) какие сведения хранятся в первой таблице? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2016, 15:21 |
|
Фейковый FK
|
|||
---|---|---|---|
#18+
Док, Person - все небходимые вам атрибуты физических лиц. Employee(Сотрудники) - fk на Person плюс все дополнительные атрибуты медиков. Patient(Пациенты) - fk на Person плюс все дополнительные атрибуты пациентов. При этом ваши медики могут быть вашими же пациентами. Employee, Patient - возможно понадобятся дополнительные таблицы. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2016, 15:31 |
|
Фейковый FK
|
|||
---|---|---|---|
#18+
Док, Address ( AddressID PersonID, CountryID, RegionID, TownID, Street, Code fk (PersonID) Person (PersonID) ) У человека может быть один или более адресов. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2016, 15:52 |
|
Фейковый FK
|
|||
---|---|---|---|
#18+
Док, Замечу без ложной скромности, что это платиновый, бриллиантовый феншуй ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2016, 15:57 |
|
Фейковый FK
|
|||
---|---|---|---|
#18+
HSЗамечу без ложной скромности хм. на первый взгляд, больно уж развесистая клюква получается. Беда в том, что я четко не представляю, какие аттрибуты и тех, и других могут потом понадобиться. Отсюда сомнения. В любом случае, спасибо за идеи. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2016, 17:43 |
|
Фейковый FK
|
|||
---|---|---|---|
#18+
HSДок, Address ( AddressID PersonID, CountryID, RegionID, TownID, Street, Code fk (PersonID) Person (PersonID) ) У человека может быть один или более адресов. надо еще добавить ID истории болезни. адрес может меняться.... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2016, 19:09 |
|
Фейковый FK
|
|||
---|---|---|---|
#18+
Tactical Nuclear Penguinнадо еще добавить ID истории болезни. Не нужно, в болезнях будет fk на носителя. Это и будет историей. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2016, 08:56 |
|
Фейковый FK
|
|||
---|---|---|---|
#18+
HS Address ( AddressID PersonID, CountryID, RegionID, TownID, Street, Code fk (PersonID) Person (PersonID) ) У человека может быть один или более адресов. ...... Замечу без ложной скромности, что это платиновый, бриллиантовый феншуй ))) Угу, подойди поближе :-) У Дока поликлиника или больница. И прежде чем что-то там говорить про фен-шуй, стоило-бы вспомнить, что по адресу как правило живёт несколько человек, и, как правило, они все иногда болеют. Следовательно из твоего фен-шуя надо выкинуть PersonID и привести всё к 4 НФ. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2016, 13:35 |
|
Фейковый FK
|
|||
---|---|---|---|
#18+
Док, Пациентов и персонал нужно хранить в разных таблицах, поскольку персоналом управляет сотрудник отдела кадров (ну, или там автоматический обмен с кадровой программой), а пациентами управляют медработники, соответственно к таблицам должны иметь доступ разные роли. Если они все будут в одной таблице, то ты их (пациентов и персонал) по ролям не разделишь и получишь в дальнейшем проблемы. А вот таблицу адресов можно наверное сделать и одну общую. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2016, 14:06 |
|
Фейковый FK
|
|||
---|---|---|---|
#18+
HSAddress ( AddressID PersonID, CountryID, RegionID, TownID, Street, Code fk (PersonID) Person (PersonID) ) У человека может быть один или более адресов. А почему Street без ID? Или номер дома :) Феншуйствовать, так до упора. И да, PersonID лишний. *Вопрос в сторону* Нахуа системе знать адреса врачей? *Вопрос в струю* Как насчет защиты ПДн? Любой врач сможет посмотреть адреса не только своих пациентов, но и других врачей? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2016, 14:11 |
|
Фейковый FK
|
|||
---|---|---|---|
#18+
Го-стхиА почему Street без ID? Или номер дома :) Феншуйствовать, так до упора. так вообще - а к чему эта самодеятельность, т.е. почему не КЛАДР или ФИАС? Го-стхиНахуа системе знать адреса врачей? это кадры. при приеме на работу конторе надо знать адрес сотрудника. Го-стхиЛюбой врач сможет посмотреть адреса не только своих пациентов, но и других врачей? а значит, адрес пациента и адрес врача - это не одно и то же, и они должны храниться отдельно. Пусть и в общем списке адресов, но доступ к кадрам должен быть только у кадровика. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2016, 14:17 |
|
Фейковый FK
|
|||
---|---|---|---|
#18+
MaratIskrdb_dev, даже не вникая в суть, я б тебе руки оторвал автора в другой табличке по 1:1 один-к-одному = дилетант ))) Да, безаппеляционное заявление :-( отношения 1:1 в БД - вещь как раз очень профессиональная. Попробую проиллюстрировать хотя-бы одним примером. Например, есть таблица, доступ к которой имеют пользователи с разными функциональными обязанностями, пусть, если разговор о медицине, врачи и медсёстры. Причём какую-либо группу полей могут редактировать врачи, а медсёстры эту группу полей только просматривать. Можно конечно, благо FB позволяет, решить проблему назначением прав на каждое поле таблицы, а можно и просто эту группу вытащить в отдельную таблицу в отношении к родительской как 1:1 и уже этой отдельной таблице назначить права. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2016, 14:23 |
|
Фейковый FK
|
|||
---|---|---|---|
#18+
kdvпри приеме на работу конторе надо знать адрес сотрудника. Причём в основном - исключительно для информирования (мало)компетентных органов. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2016, 14:39 |
|
Фейковый FK
|
|||
---|---|---|---|
#18+
kdvтак вообще - а к чему эта самодеятельность, т.е. почему не КЛАДР или ФИАС? Во, это вообще убер-феншуй, только, наверно, ТС-у так монструоно не нужно)) kdvэто кадры. при приеме на работу конторе надо знать адрес сотрудника. Дык тогда получается, что есть два типа владельца адреса, но по сущности это совершенно разные объекты, и хранить их совместно означает протекание абстракции, не говоря уже о всяческих косяках с контролем доступа. kdvа значит, адрес пациента и адрес врача - это не одно и то же, и они должны храниться отдельно. Пусть и в общем списке адресов, но доступ к кадрам должен быть только у кадровика. Ага. В общем, большого смысла объединять адреса не вижу. Профита мало - не такой уж великий труд набрать адрес заново, если вдруг врач становится пациентом, а минусов больше. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2016, 15:49 |
|
Фейковый FK
|
|||
---|---|---|---|
#18+
Завести справочник типов адресов (юр, физ, врем и т.п.) и любой персоналии можно добавлять хоть всех их с датой смены. То есть будет и история смены адресов. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2016, 16:00 |
|
Фейковый FK
|
|||
---|---|---|---|
#18+
zeon11Пациентов и персонал нужно хранить в разных таблицах Дык это и было описано в стартовом посте :) Столкнулся еще с такой заморочкой: все факты (даты) посещения заносятся еще в одну таблю (пусть будет TBL_VISITMAIN). Кроме ID пациента туда же прикручиваются ID доктора, которого он посещает, и ID клиники, куда он пришел. Когда я положил докторов и пациентов в одну корзинку табличку, угадайте, какой вопрос мне пришел в голову? Го-стхиТС-у так монструоно не нужно) абсолютно верно, я уже тут писАл об этом Мда, нет в мире совершенства ... ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2016, 17:22 |
|
Фейковый FK
|
|||
---|---|---|---|
#18+
zeon11Например, есть таблица, доступ к которой имеют пользователи с разными функциональными обязанностями, пусть, если разговор о медицине, врачи и медсёстры. Причём какую-либо группу полей могут редактировать врачи, а медсёстры эту группу полей только просматривать. Можно конечно, благо FB позволяет, решить проблему назначением прав на каждое поле таблицы, а можно и просто эту группу вытащить в отдельную таблицу в отношении к родительской как 1:1 и уже этой отдельной таблице назначить права. Для "дилетантов" есть более простой пример отношения 1:1, который "чересчур умные не дилетанты" понять вообще не в состоянии, так как у них от этого примера случается когнитивный диссонанс. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31.
P.S. Прошу прощения, если где-то опечатка. Набирал прямо тут. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2016, 19:03 |
|
Фейковый FK
|
|||
---|---|---|---|
#18+
Докzeon11Пациентов и персонал нужно хранить в разных таблицах Дык это и было описано в стартовом посте :) Столкнулся еще с такой заморочкой: все факты (даты) посещения заносятся еще в одну таблю (пусть будет TBL_VISITMAIN). Кроме ID пациента туда же прикручиваются ID доктора, которого он посещает, и ID клиники, куда он пришел. Когда я положил докторов и пациентов в одну корзинку табличку, угадайте, какой вопрос мне пришел в голову? Го-стхиТС-у так монструоно не нужно) абсолютно верно, я уже тут писАл об этом Мда, нет в мире совершенства ... Док, зачем тебе ID клиники? Или медицинский холдинг описываешь? А если по нормальному, то тут можно накрутить много чего. Ну, во первых, где специальность врача в момент приёма? Знаешь-же, сейчас он ортопед, а вечером он уже травматолог. А если он ещё и как зав. отделением принимает? вот уже ещё один ID. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2016, 19:51 |
|
Фейковый FK
|
|||
---|---|---|---|
#18+
zeon11, это очень просто объясняется: я принимаю, как минимум, в двух клиниках (на три уже не хватает ни сил, ни желания). Базу ношу с собой на флешке. В конце рабочей смены вывожу отчет на печать с сформироваными итогами. Вот тебе и id клиники. Если базу пользует одна контора, то понятна необходимость id доктора. Ну и, у меня куча пациентов, которые годами ходят за мной в разные клиники в удобное для них время в пределах одного курса лечения. Отсюда необходимость привязки id пациента к id доктора в рамках таблицы визитов. Кстати, ты верно подметил: врач может принимать в разных ипостасях. Это тоже приходится учитывать при проектировании базы. Я делаю новую базу на основе старой, которая была спроектирована более 7 лет назад. Очевидные огрехи исправляю. Увы, новые тоже появляются. Некоторая денормализация - вынужденная мера за универсальность, главное - чтобы во всем был разумный предел ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2016, 02:17 |
|
Фейковый FK
|
|||
---|---|---|---|
#18+
Док, тут у тебя только учёт приёмов или ещё и амбулаторные карты в программе ведёшь? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2016, 10:00 |
|
Фейковый FK
|
|||
---|---|---|---|
#18+
zeon11, там пока в основном только амбулаторный прием и есть. По скринам можно примерное представление составить (прямых ссылок постить не буду, можно найти из профиля) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2016, 16:57 |
|
Фейковый FK
|
|||
---|---|---|---|
#18+
zeon11Пациентов и персонал нужно хранить в разных таблицах, поскольку персоналом управляет сотрудник отдела кадров (ну, или там автоматический обмен с кадровой программой), а пациентами управляют медработники, соответственно к таблицам должны иметь доступ разные роли.вопрос легко решаем навешиванием пары вьюх. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2016, 09:19 |
|
Фейковый FK
|
|||
---|---|---|---|
#18+
rdb_devЯ всё правильно осознал?На мой взгляд ты нихрена не понял. Обсуждение модераторских действий и перепалку я порезал. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2016, 09:25 |
|
|
start [/forum/topic.php?all=1&fid=40&tid=1562137]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
46ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
83ms |
get tp. blocked users: |
1ms |
others: | 270ms |
total: | 447ms |
0 / 0 |