-
Notifications
You must be signed in to change notification settings - Fork 1
Klamm Data Model
Spencer Rose edited this page Jun 14, 2025
·
13 revisions
erDiagram
%% Main entities with vertical layout
Forms ||--o{ FormVersions : "has many"
%% FormVersions relationships
FormVersions ||--o{ FormElements : "has many"
FormVersions ||--o{ FormStylesheets : applied_to
FormVersions ||--o{ FormScripts : "has many"
FormStylesheets ||--o{ FormVersions : applied_to
FormScripts ||--o{ FormVersions : applied_to
FormVersions ||--o{ FormDeployments : "has many"
%% FormElement (using labels to indicate inheritance)
FormElements ||--|o FormFieldDataBindings : "has one"
FormElements ||--|o FormElements : "has one parent"
%% Models for FormElements Types
TextInputFormElements ||--o{ FormElements : "has one"
CheckboxInputFormElements ||--o{ FormElements : "has one"
SelectInputFormElements ||--o{ FormElements : "has one"
RadioInputFormElements ||--o{ FormElements : "has one"
TextareaInputFormElements ||--o{ FormElements : "has one"
NumberInputFormElements ||--o{ FormElements : "has one"
DateSelectInputFormElements ||--o{ FormElements : "has one"
ButtonInputFormElements ||--o{ FormElements : "has one"
ContainerFormElements ||--o{ FormElements : "has one"
HTMLFormElements ||--o{ FormElements : "has one"
%% Sub-FormElements
SelectInputFormElements ||--o{ SelectOptionFormElements : "has many"
%% Form Field Validators
TextInputFormElements ||--o{ FormFieldValidators : "has many"
CheckboxInputFormElements ||--o{ FormFieldValidators : "has many"
NumberInputFormElements ||--o{ FormFieldValidators : "has many"
TextareaInputFormElements ||--o{ FormFieldValidators : "has many"
SelectInputFormElements ||--o{ FormFieldValidators : "has many"
RadioInputFormElements ||--o{ FormFieldValidators : "has many"
DateSelectInputFormElements ||--o{ FormFieldValidators : "has many"
%% Entity definitions
Forms {
int id PK
int forms_id
int parent_form_elements_id FK
string form_title
int ministry_id FK
string description
string notes
int data_bindings_id FK
int form_frequencies_id FK
int form_reaches_id FK
string print_reason
string retention_needs
boolean icm_non_interactive
string workbench_footer_fragment_path
string dcv_material_number
string orbeon_functions
boolean icm_generated
}
FormVersions {
int id PK
int form_id FK
string uuid
int version_number
string status "draft|approved|final"
int form_developer_id FK
}
FormDeployments {
int id PK
int form_version_id FK
string environment "test|dev|prod"
datetime deployed_at
}
FormFieldDataBindings {
int id PK
string name
string description
string data_sources_id FK
string data_binding_path
string data_binding_type
}
FormStylesheets {
int id PK
int form_version_id FK
string filepath
string name
string type "web|pdf"
string description
}
FormScripts {
int id PK
int form_version_id FK
string filepath
string name
string type "web|pdf"
string description
}
FormFieldValidators {
int id PK
string name
string regex
string description
}
FormElements {
int id PK
uuid token
string name
int form_versions_id FK
int parent_id FK "nullable"
string help_text
string description
boolean is_repeatable
string repeater_item_label
boolean is_resetable
boolean visible_web
boolean visible_pdf
boolean is_template
}
TextInputFormElements {
int id PK
int form_elements_id FK
string placeholder_text
string label
boolean visible_label
string mask
int maxlength
int minlength
}
CheckboxInputFormElements {
int id PK
int form_elements_id FK
string label
boolean visible_label
}
SelectInputFormElements {
int id PK
int form_elements_id FK
string label
boolean visible_label
}
SelectOptionFormElements {
int id PK
int form_element_select_inputs_id FK
string label
int order
string description
}
RadioInputFormElements {
int id PK
int form_elements_id FK
string label
boolean visible_label
string[] options
string default_value
}
TextareaInputFormElements {
int id PK
int form_elements_id FK
string name
string placeholder_text
string label
boolean visible_label
int rows
int cols
int maxlength
int minlength
}
NumberInputFormElements {
int id PK
int form_elements_id FK
string placeholder_text
string label
boolean visible_label
int min
int max
int step
int default_value
}
DateSelectInputFormElements {
int id PK
int form_elements_id FK
string placeholder_text
string label
boolean visible_label
string repeater_item_label
date min_date
date max_date
date default_date
string date_format
boolean include_time
}
ButtonInputFormElements {
int id PK
int form_elements_id FK
string label
string button_type "submit|reset|button"
}
ContainerFormElements {
int id PK
int form_elements_id FK
string container_type "page|fieldset|section"
boolean collapsible
boolean collapsed_by_default
}
HTMLFormElements {
int id PK
int form_elements_id FK
string name
string html_content "raw HTML to embed"
string repeater_item_label
}