One approach for the various treatment types would be to look at the attributes that are common between them, for example it may include:
- name
- description
- price
- time_required
These become the columns of tbl_treatment
Then use an additional table for other (treatment specific) attributes tbl_treatment_attributes with a structure like:
- treatment_id
- attribute_name
- attribute_value
Each treatment could have many additional attributes, the acceptable attributes (including defaults) could be managed in tbl_treatment_defaults
- treatment_id
- attribute_name
- field_type
- validations
- 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 |
| ........ | | ....... |
+--------------------------+ +------------------------+