динамический дизайн базы данных? - PullRequest
4 голосов
/ 07 декабря 2010

Мне дали бумажную форму, которая используется больницей для сбора информации о ее пациентах! форма разделена на разделы, и каждый раздел имеет много флажков ДА / НЕТ.

Например, один из разделов - это раздел «История», содержащий более 20 несвязанных полей «да / нет»:

курильщик (да или нет)

диабет (да или нет)

Хроническое легкое (да или нет) , , , , .

Другим разделом является раздел «Данные стресс-теста», в котором есть вопросы, подобные следующим:

Стандартный тест (да / нет), если да, каковы результаты (отрицательные или положительные), если положительный (в какой степени (низкий или высокий или промежуточный)

...

Меня просят спроектировать базу данных, показать таблицы отношений и отношения между ними! : S: S это НИЧЕГО не похоже на «базу данных студенческого класса» или «базу данных CD-компаний», с которой я столкнулся! это просто .. я не знаю .. ДИНАМИЧНЫЙ: s: s

У меня НЕТ ИДЕИ, как даже НАЧАТЬ проектирование этой базы данных или что я должен читать, изучать или практиковать, чтобы создать базу данных для таких данных!

ПОЖАЛУЙСТА, ПОМОГИТЕ !!

Ответы [ 6 ]

4 голосов
/ 07 декабря 2010

Взгляните на эти два примера SO:

3 голосов
/ 07 декабря 2010

Взгляните на схему базы данных EAV (Значение атрибута сущности) .

Вам не нужно использовать ее исключительно для динамических данных.Это сделает эту часть ваших запросов интересной?Да.Но покупает невероятное количество гибкости.Кстати, я успешно использовал схему EAV для нескольких проектов EHR / EMR.

1 голос
/ 07 декабря 2010

Взгляните на «Образцы анализа» Мартина Фаулера.Он хорошо объясняет некоторые хорошие объектные модели для систем здравоохранения.Я думаю, что это может дать вам несколько хороших идей относительно модели данных.

Начните с объектов, а остальное последует.

1 голос
/ 07 декабря 2010

Ну, есть два основных способа сделать это. В любом случае у вас будет таблица пациентов с идентификационным номером пациента, его именем и, возможно, контактной информацией.

Затем вы можете добавить столбцы в эту таблицу (т. Е. Столбец курильщика, который будет либо 1 для да, либо 0 для нет), и вы можете добавить целую группу столбцов, соответствующих каждому из атрибутов пациентов.

Другим (и лучше, ИМХО) было бы оставить таблицу пациентов в покое, а затем добавить таблицу атрибутов. Таблица атрибутов будет содержать столбцы PatientID, attributeName и attributeValue. Таким образом, для курильщика вы должны взять идентификатор пациента и добавить строку в таблицу атрибутов (id, "smoker", 1) и продолжить добавление таким образом. Затем вам нужно написать запросы, чтобы получить всю информацию о данном пациенте из таблицы атрибутов, но это еще одна проблема ...

0 голосов
/ 08 декабря 2010

Что вы подразумеваете под "динамическим"? Похоже, у вас есть достаточно стандартный набор данных о пациентах, которые нужно хранить. Я бы посоветовал вам смоделировать эти данные: пациенты и их характеристики. Не пытайтесь смоделировать анкету. Средства, используемые для сбора этих данных, не имеют значения, и дизайн формы не имеет ничего общего с дизайном базы данных.

0 голосов
/ 07 декабря 2010

Прежде чем приступить к проектированию в реляционной базе данных, попытайтесь представить, будет ли его легко поддерживать. На практике многие из этих типов систем пытаются сломать реляционную модель - это довольно классический случай, когда у вас есть формы, у каждой формы есть поля, ни одно из полей не связано друг с другом, у каждого пациента есть копии форм и полей и т. д.

Я бы предпочел это по сравнению с реляционной моделью. Посмотрите на такие проекты, как Couch DB , которые являются документно-ориентированными базами данных вместо режима, который вы привыкли видеть с помощью таблиц и схем и т. Д.

Покопайтесь в CouchDB, Mnesia или другой нереляционной базе данных. Получите книгу на эту тему и выясните, как лучше всего проектировать системы такого рода идиоматическим образом.

На практике такие системы похожи на базы данных атрибут-сущность, за исключением того, что их можно легко найти в индексированном.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...