2015-01-18 2 views
0

У меня есть эта база данных с пациентами, и меня спросили, находится ли она в 3NF. На первый взгляд, я думал, что это так, но когда я выглядел лучше на столе Occupy, я передумал. Я собираюсь объяснить, насколько я могу базы данных.Является ли эта база данных в 3NF?

Patient

enter image description here

палаты, первичный ключ (W_id, H_id)

enter image description here

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

enter image description here

Эта база данных дают мне, как это, с этими таблицами и их первичных ключей.

+1

Да. Это 3NF. Пациент не может «войти» в одну палату дважды в тот же день. – Strawberry

ответ

1

Я работал над довольно многими приложениями для здравоохранения, я внес бы следующие изменения в схему.

Ward Таблица

Добавить поле идентификационного Wards таблицы, сделать его первичный ключ, создать уникальное ограничение на H_ID и W_ID.

Занимайте Таблица

В Занимайте таблицу

использовать столбец идентификации из таблицы Уорда в качестве эталонного ключа, и, очевидно, p_id для пациентов.

Столбец datetime, чтобы записать дату и время для приема или разряда.
Другой колонка для записи типа события, как (допуск, разряд, разряд в другую палату, и т.д.) refferencing еще один столбец в Event_Types

Создайте другую таблицу типов Event_Types событий, упомянутых в колонке EVENT_TYPE в Занимайте таблицу.

EventTypeID EventTypeDescription 
    1   Admission 
    2   Discharged 
    3   Discharged to Another Ward 
+0

Хорошо объяснил, я вижу это сейчас. – valkon

+0

Также, поскольку это данные о здравоохранении, данные никогда не будут удалены (стандарты Великобритании, возможно, разные в других странах). Но вы все же должны иметь возможность делать мягкие удаления, добавить бит столбца 'deleted' во все ваши таблицы ,установите его значение по умолчанию на '0', и когда вы хотите удалить (мягко-удалить) строку, просто установите ее значение в' 1'. Создайте отфильтрованный индекс, в котором удалено = 0, и все ваши запросы должны иметь что-то вроде where deleted = 0. –

1

Схема стола «палата», похоже, не в 2NF. W_id, по-видимому, определяет Wname.

В 2NF каждый атрибут, который не является частью первичного ключа, не должен определяться только частью первичного ключа. Он должен определяться только всем первичным ключом.

Схема, которая не находится в 2NF, не может быть в 3NF. Поэтому эта схема базы данных не находится в 3NF.

+0

Да, вы правы в таблице подопечных. Я не заметил – valkon

Смежные вопросы