2014-02-06 2 views
1

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

У меня немного борьбы с проектирования баз данных, хотя ...

я, очевидно, должен иметь назначение таблицы (tbl_appointment), назначения могут иметь процедуры, связанные с ними, и эти процедуры все имеют разные атрибуты (столбцы).

Поэтому я думаю, что у меня должно быть tbl_prointment, а также tbl_treatment, я не уверен, как связать эти таблицы с несколькими типами лечения с различными параметрами лечения и сохранить данные лечения, связанные с назначением ,

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

EDIT

Как это не было достаточно ясно, вот скриншот того, как мой фактический дб выглядит.

Если я реализую процедуры, так как я сделал пародонтограмму, у меня будет 20 столов по одному для каждого типа лечения. Я хочу этого избежать!

enter image description here

EDIT

@Ian Кинни, поэтому, если я получил то, что вы предлагали правильно, это как часть базы данных мы обсуждаем должны выглядеть ...

enter image description here

Я прав? Не обращайте внимания на типы отношений, поскольку все они 1: 1, я знаю, что я должен использовать некоторые M: N, но это было только для примера.

+0

должен быть первичным ключом для идентификации назначения, такие как ' appointm end_id' или некоторые такие .., то вы использовали бы это как внешний ключ в таблице tbl_treatment. У вас есть столбец 'assign_id', в котором хранится назначение, с которым связано обращение. –

+0

Я бы также рекомендовал таблицу для врачей/ортодонтов или как бы с ней встречался cust и «doctor_id». используйте это как внешний ключ в 'tbl_treatment'. если вы хотите добавить клиентов с помощью 'tbl_customer' и' cust_id' и fk, которые, вероятно, не будут плохими. Затем вы начинаете думать о семьях, где вы собираетесь лечить ребенка, но родитель должен связаться с ним, и вы собираетесь хранить страховую информацию, если это необходимо, чтобы ее зашифровали ..... Вскоре вы не можете помочь, но интересно, как кто-нибудь закончил программное обеспечение, которое делает это – PsychoData

+0

О, я думаю, что я не понял себя ... Я знаю, как связывать таблицы, просто, что я не могу думать о структуре базы данных, чтобы встретить эти требования, перечисленные мной. Я имею в виду, должен ли я иметь таблицу для лечения, а другую для лечения? и, возможно, еще один для лечения? где я должен указать, какие параметры требуют лечения? На самом деле довольно сложно прояснить это. – lascort

ответ

1

Один из подходов к различным видам лечения было бы посмотреть на атрибуты, которые являются общими между ними, например, он может включать в себя:

  • имя
  • описание
  • цена
  • time_required

Это столбцы tbl_treatment

Затем используйте дополнительную таблицу для других (лечение специфических) атрибутов tbl_treatment_attributes со структурой типа:

  • treatment_id
  • ATTRIBUTE_NAME
  • ATTRIBUTE_VALUE

Каждая процедура может иметь множество дополнительных атрибутов, приемлемые атрибуты (включая значения по умолчанию) могут управляться в tbl_treatment_defaults

  • treatment_id
  • имя_атрибута
  • FIELD_TYPE
  • валидаций
  • DEFAULT_VALUE

EDIT

+-------------------+    +--------------------+ 
| tbl_treatment  |    | tbl_treatment_type | 
+===================+    +====================+ 
|*treatment_id  |    |*treatment_type_id | 
|+treatment_type_id |<-------------| treatment_name  | 
| ......   |    | ......    | 
+-------------------+    +--------------------+ 
     |         | 
     v         v 
+--------------------------+  +------------------------+ 
| tbl_treatment_attributes |  | tbl_treatment_defaults | 
+==========================+  +========================+ 
|*treatment_id    |  |*treatment_type_id  | 
| attribute_name   |<------| attribute_name   | 
| attribute_value   |  | default_value   | 
| ........     |  | .......    | 
+--------------------------+  +------------------------+ 
+0

Как мне следует всегда указывать одинаковые атрибуты для каждого вида лечения? Должен ли я делать это на стороне клиента? – lascort

+0

отредактированный ответ - вы можете использовать дополнительную таблицу для определения разрешенных атрибутов для каждого типа лечения –

+0

См. Второе редактирование, чтобы проверить, правильно ли я получил его – lascort

0

В таблице tbl_appointment назначения должна иметь только данные назначения и patientId (внешний ключ в ваш tbl_Patient таблицы)

Вы должны иметь третью таблицу с именем tbl_Visit, который содержит внешний ключ в tbl_appointment. Затем другая таблица называется tbl_Visit_treatment, которая имеет VisitId и TreatmentId. Таким образом, это tbl_Visit_treatment - это таблица взаимоотношений «многие-ко-многим», которая отслеживает все процедуры, выполненные в каждом посещении.

Что касается TreatmentType (ов), что будет просто таблица типа называется tbl_TreatmentType с ID, Name, Code и Description полей. TreatmentId будет внешним ключом в таблице tbl_Treatment.

+0

и как насчет конкретных данных лечения? Я имею в виду данные, которые должны быть полем в одном типе лечения, но не другом – lascort

+0

Это будет в 'tbl_Treatment' как поле под названием' Описание'. Если вы хотите отслеживать точный способ обработки лечения за посещение пациента, тогда он должен быть полем в 'tbl_Visit_Treatment' в поле под названием« TreatmentDescription ».Например, если у вас есть «корневой канал» в качестве лечения, «tbl_Treatment» будет иметь «ID» = 2, «Code» = «ROOTC», «Описание» = «Обработка корневых каналов», «InsuranceCode» = «XYZ01» и т. Д. И 'tbl_Visit_Treatment' будет иметь что-то вроде' VisitID' = 4, 'TreatmentId' = 2' TreatmentDescription' = "Удалить корень в корневом канале Teeth S2, capped." и т. д. – Shiva

+0

Но как насчет атрибутов, которые нужно сохранить на этом корневом канале? Например, как бы вы сохранили номер зуба как атрибут вместо строки в описании? – lascort

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