@dba_ru

Страница 253 из 718
Al
20.09.2017
05:45:54
Классика. Нет тз. Он не знает что выбрать

Можно монетку подкинуть

Denis
20.09.2017
05:48:37
момент, уточняю. есть задача про амбулаторные карты пациента. у пациентов меняются данные в картах, напирмер фио, адреса. есть так же полиса, документы, которые валидны только на определенный временной срез. данные вносятся в карты из внешних систем типа фомса и из регистратур (вживую пользователями). необходимо иметь в карте возможность увидеть данные на определенный момент времени по определенному источнику данных

пока склоняюсь к четвертому типу

Google
Vladislav
20.09.2017
05:50:59
Я сейчас по типам не помню, но смысл в том, что если классические реляционки, то в большинстве своем удобно по двум полям: start и end. По одному полю выгодно, если БД колоночная и если есть хорошие аналитические функции, чтобы вынимать данные по этому одному полю

Al
20.09.2017
05:52:06
пока склоняюсь к четвертому типу
6. Обсуждали уже на днях. Валишь все в кучу. Выбираешь селектом по имени клиента и дате

Vladislav
20.09.2017
05:52:46
Ну и еще стоит учесть, что по одному полю очень геморно иногда писать запросы, т.к. надо делать под запросы, тогда как по двум полям достаточно просто условия

Denis
20.09.2017
05:53:44
а при этом ссылочной целостности мы машем ручкой и прощаемся в внешними ключами, верно?

Vladislav
20.09.2017
05:53:50
Это очень важный момент, если надо потом данные распихивать на уровне какого-нибудь ORM или стандартизированного ETL

Al
20.09.2017
05:54:32
У меня такое впечатление что большинство людей воспринимают примеры решений как конечный паттерн в который нельзя вносить изменения под страхом импотенции

Заведи еще 100500 колонок и размещай в них ключи и ссылки и что там еще зачешется. Можешь даже даты в юникc тайм записывать. Что бы в условиях выборки проще искать. 3456 <t <456788

Denis
20.09.2017
06:02:07
ну нет, все не так страшно. смотрите, приведу пример. у меня есть пациенты,чьи контракты (документы, полисы) версионируются. грубо говоря, есть таблица в которой у одного пациента есть записи вида patid, stamp. есть контракты этого пациента вида conid, stamp, patid. ссылка осуществляется не на конкретную версию пациента, а просто на его идентификатор, так как карта пациента и его контракты меняются в разное время. в данном случае внешний ключ создать нельзя

я могу все перевести на uuid или создавать суррогатную таблицу с идентификатором пациента, на который будут ссылаться версии карты этого пациента

первый вариант хоронит uuid, второй - лишняя таблица для каждой версионируемой сущности

Al
20.09.2017
06:03:54
Пойду застрелюсь

Denis
20.09.2017
06:04:48
хи) а перед смертью прощальную записку не напишите по моему вопросу?

Google
Al
20.09.2017
06:09:38
Я написал уже

Но у вас же свои варианты. Это типа прошу помощи, но делать буду вот так.

Ilia
20.09.2017
06:12:12
пока склоняюсь к четвертому типу
Так надо адаптивно принимать решение по каждому атрибуту, который меняется, в соответствии с ТЗ, потому что я думаю смену ФИО можно и перезаписать, а смену полиса явно надо жёстко хранить.

Ilia
20.09.2017
06:14:32
Анахрена их вообще искать в аналитической базе?

Al
20.09.2017
06:16:29
Так надо адаптивно принимать решение по каждому атрибуту, который меняется, в соответствии с ТЗ, потому что я думаю смену ФИО можно и перезаписать, а смену полиса явно надо жёстко хранить.
Нужно просто завести одну таблицу на все. И выбирай например по номеру полиса. Будет 2 фамилии на один номер полиса значит сменила увидишь когда

И так далее

Denis
20.09.2017
06:17:05
Анахрена их вообще искать в аналитической базе?
а это медицинская информационная система, она не только про аналитику. там и пациентов надо оформлять (при этом без дублей)

Старый
20.09.2017
06:18:27
а это медицинская информационная система, она не только про аналитику. там и пациентов надо оформлять (при этом без дублей)
если у нас и дальше будут сокращать за год 63к конек в больницах и врачей, то эта система скоро не понадобится

Ilia
20.09.2017
06:19:15
Ну все равно в бд надо решать про все атрибуты индивидуально

ФИО - текущее в таблице справочнике и в отдельной таблице Алиасы с датами.

Al
20.09.2017
06:21:54
Denis
20.09.2017
06:21:55
Тогда при чем тут Slowly Changing Dimensions ?
атрибуты пациента меняются не часто и должны версионироваться. при этом нужно видеть на каждый временной срез состояние пациента и его контрактов и быть способным создать выгрузку в тот же фомс по данным из его базы на нужный момент времени ((не спрашивайте, все беспощадно)

Denis
20.09.2017
06:22:08
что же это, если не scd?

Al
20.09.2017
06:22:38
Ilia
20.09.2017
06:22:38
Денис, просто как подходы это рассмотреть можно

Al
20.09.2017
06:22:56
Влажные фантазии?

Старый
20.09.2017
06:23:12
Ты хохлосрачь тут устроить собираешься?
а он тут причём? это вообщет данные минздрава, что они сократили 63к больничных коек и сколько то там больниц, и что мы пришли к результатам 1913 года по кол-ву врачей и больничных коек

Google
Denis
20.09.2017
06:23:13
ФИО - текущее в таблице справочнике и в отдельной таблице Алиасы с датами.
я такую схему уже использовал на предыдущей версии. по факту понял, что я зачем-то на две таблицы разбил то, что должно быть в одной

Ilia
20.09.2017
06:23:18
Но там половина из тех типов отпадут у тебя просто потому что у тебя бд не склад данных, а оперативная

Denis
20.09.2017
06:25:18
Кривые руки?
а если конструктивно, что не так? я серьезно, поправьте лучше сейчас

Старый
20.09.2017
06:26:43
ну ты хоть так не смеши

Al
20.09.2017
06:26:53
Ilia
20.09.2017
06:27:00
Без этого можно только пальцем в небо тыкать

Старый
20.09.2017
06:27:52
Без этого можно только пальцем в небо тыкать
мы сейчас делаем систему маркировки лекарств, мехов, обуви тз менялось кардинально 30 раз за пол года

Denis
20.09.2017
06:28:57
вообще вопрос изначально был - кто делал что-то похожее на scd и какие подводные камни были, поделитесь опытом. а вы пытаетесь решить мою задачу сейчас

Ilia
20.09.2017
06:29:48
мы сейчас делаем систему маркировки лекарств, мехов, обуви тз менялось кардинально 30 раз за пол года
Ты похоже упоротый тролль... Я не собираюсь обсуждать, есть там у них ТЗ и как часто оно меняется. Я говорю, что без постановки задачи хотя бы минимальной и понимания задач л можно и без ТЗ) ничего советовать нельзя

Ну, я поделился

Denis
20.09.2017
06:31:10
Ну, я поделился
благодарю

Al
20.09.2017
06:32:56
Ilia
20.09.2017
06:33:25
А подводные камни известны, надо чтобы всегда была возможность выдать данные на сейчас и на дату в прошлом, при этом чтобы делалось это оптимальным для 80 % задач образом

Google
Старый
20.09.2017
06:33:39
Так вон оно че Михалыч. Это обьясняет че оно все такое..
так а как ещё? самое прикольное, что системы по ндс, егаису и куче ещё вещей обслуживают инженеры за 35к

сервис недел лежит, да и ладно

Ilia
20.09.2017
06:34:26
Так вон оно че Михалыч. Это обьясняет че оно все такое..
А типа сесть и самому написать ТЗ конечно день, Пушкин же у нас ТЗ пишет всегда...

Старый
20.09.2017
06:35:14
А типа сесть и самому написать ТЗ конечно день, Пушкин же у нас ТЗ пишет всегда...
а кому твоё тз надо? будет понедельник сядут 6 дядь и скажут, нравится им или нет, если нет - переделывай

Al
20.09.2017
06:35:24
А типа сесть и самому написать ТЗ конечно день, Пушкин же у нас ТЗ пишет всегда...
Зачем мне самому писать тз для заказчика. Пусть оплачивает я ему войну и мир напишу.

Старый
20.09.2017
06:36:21
Большая честь же
честь не честь, а я уже пол года на это смотрю

Старый
20.09.2017
06:39:31
Ты как бы ежели не нравится, не стесняйся, увольняйся...
я не занимаюсь проектированием базы, мне пофиг, я лишь инфраструктуру и нагрузку поддерживаю, и смотрю где проблемы, я лишь говорю о том, что идеальный мир к госам приписывать не надо, увольняться дело хорошее, но куда ты пристроишь 80 тыс человек?

Старый
20.09.2017
06:43:24
А чего тогда в разговоры серьезные вмешиваешся?т
а чем он закончился, требованием от человека того, чего у него не будет?

Al
20.09.2017
06:45:07
а чем он закончился, требованием от человека того, чего у него не будет?
Человек хочкт создавать динамически таблички на каждого пациента

Он считает это вариантом

Старый
20.09.2017
06:46:04
Человек хочкт создавать динамически таблички на каждого пациента
в условиях когда таблицы меняются каждую неделю, а данные убирать нельзя, может это и вариант

Denis
20.09.2017
06:46:21
Человек хочкт создавать динамически таблички на каждого пациента
что-то я не припомню, чтобы я предлагал создавать динамические таблицы на каждого пциента. что за бред

Al
20.09.2017
06:48:08
первый вариант хоронит uuid, второй - лишняя таблица для каждой версионируемой сущности

Denis
20.09.2017
06:48:18
я предполагал одну таблицу для карт пациента с временными штампами. классический четвертый тип scd, его единственный минус - на него нельзя создавать внешние ключи. это меня смутило, полез к вам за опытом

Google
Denis
20.09.2017
06:49:48
первый вариант хоронит uuid, второй - лишняя таблица для каждой версионируемой сущности
помимо этого я рассматривал вариант двух таблиц, где в первой одна колонка patid с первичным кключом ( на нее все ссылаются), во второй - версии этого patid. но это не история про динамические таблицы на каждого пациента

так и в чем я не прав? Даешь каждому пациенту отдельную таблицу
ты не прав, ты меня не так понял. это как упороться надо, чтобы каждому пациенту создавать свою таблицу? как это поддерживать

Denis
20.09.2017
06:56:37
на самом деле у меня есть главный вопрос - сколь опасно отказываться от внешних ключей и вводить версии для карт пациентов, по которым еще будет строиться аналитика. вроде если все правильно написать, все должно быть корректно. но внутренне содрагаюсь отказываться от защиты от дурака (себя) в виде внешних ключей

Ilia
20.09.2017
08:29:51
Опасно. Но это зависит от твоей архитектуры приложения, потому как может у тебя там 20 проверок перекрёстных по данным до того, как всё это попадает в БД...

Но я вообще не понимаю постановку вопроса : почему ты должен от FK отказываться? Что мешает их делать всегда ?

Denis
20.09.2017
08:36:12
Ну смотри, есть две таблицы - пациенты и контракты пациентов. В таблице пациенты первичный ключ, допустим, (patid, stamp). В таблице контрактов условно три колонки - conid, stamp, patid. Первичный ключ - (conid, stamp), поле patid должно по идее ссылаться на пациентов в виде внешнего ключа, но не может, так как в таблице пациентов уникален лишь составной ключ (patid, stamp). Я думал для каждой версионируемой таблицы создавать ещё одну, например «уникальные id пациента» с первичным ключом patid, но это overhead, да и такие конструкции слишком много где жегородить придётся

Ilia
20.09.2017
08:37:10
В таблице пациенты первичный ключ, допустим, (patid, stamp). Почему такой-то ?

Ты же на пациента контракт заводишь, а не на его паспортные данные ...

Нет, у тебя всё не так.

Тебе надо сделать одну таблицу пациентов, и там хранить неменяющиеся со временем данные, и к ней создать дочернюю таблицу, 1:N, где будут периоды действия данных и данные, которые ты будешь менять со временем.

Ссылаясь на поциэнта, ты должен ссылаться на главную таблицу с (patient_id) в виде ключа. Ссылаясь на какие-то его данные — уже на дочернюю с ключём (patient_id, ...)

Denis
20.09.2017
08:40:33
Я понимаю идею, это как раз тот вариант где я создаю таблицу уникальный идентификаторов пациента из одной колонки - это единственное, что не может меняться)

Ilia
20.09.2017
08:40:50
Вряд ли, но путь так

Дата рождения, напр. не будет меняться.

Denis
20.09.2017
08:41:39
Поверь, так. Дата рождения - это атрибут паспорта. Можно радикально все менять

Ilia
20.09.2017
08:42:15
бл.. я име ю в виду биологическое рождение, а не по паспорту

Я понимаю, что молодуха может себе написать, что ей 38 а не 55, но от этого климакс у неё не остановится...

По паспорту это вообще в отдельных таблицах должно быть, документы, паспортные данные. и т.п.

Denis
20.09.2017
08:43:53
Я понимаю, только задача про источники данных, которым нет доверия. В базе Фомса зачастую неправильные даты рождения, данные распарила и т.д. Там есть сложный алгоритм поиска пациентов

Ilia
20.09.2017
08:44:32
Группа крови, резус, я не знаю медицину. но дофига у тебя будет показателей именно медицинских , не изменяемых.

Страница 253 из 718