- Added `useAssetPickerController` for managing asset selection logic. - Created `AssetSelectProps` type for defining asset selection properties. - Implemented `AssetPickerDialog` for displaying the asset selection interface. - Developed `AssetPickerList` for rendering the list of selectable assets. - Introduced `AssetSelect` component for integrating the asset picker into forms. - Created `AssetList` component for shared asset listing functionality. - Added tests for workstation creation logic to ensure proper validation. - Implemented workstation asset fields and association fields for managing workstation assets. - Developed workstation lifecycle dialog for managing work profile states. - Added form progress component for visualizing multi-step forms.
53 KiB
Diagrama de entidad relación de la base de datos
Esquema físico consultado en MariaDB el 14 de octubre de 2026 mediante information_schema. Esta instantánea refleja las tablas y restricciones existentes, no un diseño propuesto ni únicamente los modelos de Sequelize. No se han consultado registros de negocio ni modificado la base de datos.
130 tablas y 2 vistas SQL · 999 columnas · 1054 restricciones FK · 355 relaciones distintas (agrupando restricciones con idénticas columnas, destino y reglas).
- Diagrama completo, con todas las columnas (Mermaid).
- Diccionario completo de tablas, columnas y claves foráneas.
Cómo leer los diagramas
||: exactamente uno; |o: cero o uno; o{: cero o muchos; o|: cero o uno en el extremo hijo. La nulabilidad de la FK determina si el padre es opcional. Las restricciones PRIMARY/UNIQUE determinan si el hijo puede repetirse. Las líneas discontinuas representan asociaciones por FK; no se deduce composición de dominio a partir de ellas. La etiqueta indica las columnas del hijo.
Los diagramas por área muestran las PK/FK y los padres externos necesarios para entender sus relaciones. Cada tabla pertenece a un área; los padres pueden repetirse como referencia. El archivo completo incluye todas las columnas, también las tablas sin FK. Los nombres son los reales de MariaDB: por ejemplo, las personas se almacenan en company_contacts.
Vista principal
Vista reducida: omite tablas auxiliares e históricas; todas ellas aparecen en las áreas siguientes y en el diagrama completo.
erDiagram
direction LR
asset_brands
asset_definitions
assets
companies
company_contacts
company_departments
company_sites
interventions
person_department_assignments
resource_definitions
resources
tickets
users
work_profiles
workstation_assets
workstation_members
workstations
companies |o..o{ asset_definitions : "companyId"
asset_brands |o..o{ assets : "brandId"
asset_definitions ||..o{ assets : "templateId"
companies ||..o{ assets : "companyId"
company_sites |o..o{ assets : "siteId"
companies ||..o{ company_contacts : "companyId"
companies ||..o{ company_departments : "companyId"
companies ||..o{ company_sites : "companyId"
companies ||..o{ interventions : "companyId"
tickets |o..o{ interventions : "ticketId"
users |o..o{ interventions : "assigneeId"
companies ||..o{ person_department_assignments : "companyId"
company_contacts ||..o{ person_department_assignments : "personId, companyId"
company_departments ||..o{ person_department_assignments : "departmentId, companyId"
companies |o..o{ resource_definitions : "companyId"
companies ||..o{ resources : "companyId"
resource_definitions |o..o{ resources : "addressFieldId"
resource_definitions |o..o{ resources : "contextFieldId"
resource_definitions |o..o{ resources : "referenceFieldId"
resource_definitions ||..o{ resources : "templateId"
companies ||..o{ tickets : "companyId"
company_contacts |o..o{ tickets : "requesterId"
users |o..o{ tickets : "assigneeId"
assets ||..o{ work_profiles : "assetId"
companies ||..o{ work_profiles : "companyId"
company_contacts ||..o{ work_profiles : "personId"
assets ||..o{ workstation_assets : "assetId"
assets ||..o{ workstation_assets : "companyId, assetId"
companies ||..o{ workstation_assets : "companyId"
workstations ||..o{ workstation_assets : "companyId, workstationId"
workstations ||..o{ workstation_assets : "workstationId"
assets ||..o{ workstation_members : "assetId"
workstations ||..o{ workstation_members : "workstationId"
assets |o..o{ workstations : "computerAssetId"
companies ||..o{ workstations : "companyId"
company_contacts |o..o{ workstations : "personId"
company_sites |o..o{ workstations : "siteId"
Áreas del esquema
| Área | Tablas |
|---|---|
| Cuentas y accesos: histórico | 15 |
| Cuentas y accesos: estado actual | 18 |
| Vistas SQL de cuentas y accesos | 2 |
| Correo y configuraciones | 16 |
| Activos y catálogo | 18 |
| Compañías y personas | 8 |
| Usuarios y sesión | 3 |
| Tickets e intervenciones | 19 |
| Procesos de personas | 9 |
| Teletrabajo y conexiones remotas | 4 |
| Recursos y catálogo | 13 |
| Perfiles de usuario | 2 |
| Puestos de trabajo | 5 |
Cuentas y accesos: histórico
Tablas propias: access_account_person_revision_values, access_account_revision_values, access_coverage_revision_values, access_environment_revision_values, access_grant_revision_values, access_group_revision_values, access_membership_revision_values, access_need_revision_permissions, access_need_revision_values, access_permission_revision_values, access_resource_revision_values, access_resource_type_revision_values, access_revisions, access_system_revision_values, access_template_revision_values.
erDiagram
direction LR
access_account_person_revision_values {
char ownerId PK,FK
char accountId FK
char personId FK
}
access_account_revision_values {
char ownerId PK,FK
char systemId FK
char environmentId FK "nullable"
}
access_coverage_revision_values {
char ownerId PK,FK
char needId FK
char grantId FK
char accountPersonId FK
char membershipId FK "nullable"
}
access_environment_revision_values {
char ownerId PK,FK
char systemId FK
}
access_grant_revision_values {
char ownerId PK,FK
char resourceId FK
char permissionId FK
char accountId FK "nullable"
char groupId FK "nullable"
}
access_group_revision_values {
char ownerId PK,FK
char systemId FK
char environmentId FK "nullable"
char templateId FK "nullable"
}
access_items {
char id PK
char workspaceId FK
}
access_membership_revision_values {
char ownerId PK,FK
char accountId FK
char groupId FK
}
access_need_revision_permissions {
char ownerId PK,FK
int position PK
char permissionId FK
}
access_need_revision_values {
char ownerId PK,FK
char personId FK
char resourceId FK
}
access_permission_revision_values {
char ownerId PK,FK
char resourceTypeId FK
}
access_resource_revision_values {
char ownerId PK,FK
char resourceTypeId FK
char systemId FK "nullable"
char environmentId FK "nullable"
}
access_resource_type_revision_values {
char ownerId PK,FK
}
access_revisions {
char id PK
char itemId FK
char actorId FK
}
access_system_revision_values {
char ownerId PK,FK
}
access_template_revision_values {
char ownerId PK,FK
char systemId FK "nullable"
}
company_contacts {
char id PK
char companyId FK
}
users {
char id PK
}
access_items ||..o{ access_account_person_revision_values : "accountId"
access_revisions ||..o| access_account_person_revision_values : "ownerId"
company_contacts ||..o{ access_account_person_revision_values : "personId"
access_items |o..o{ access_account_revision_values : "environmentId"
access_items ||..o{ access_account_revision_values : "systemId"
access_revisions ||..o| access_account_revision_values : "ownerId"
access_items ||..o{ access_coverage_revision_values : "accountPersonId"
access_items ||..o{ access_coverage_revision_values : "grantId"
access_items |o..o{ access_coverage_revision_values : "membershipId"
access_items ||..o{ access_coverage_revision_values : "needId"
access_revisions ||..o| access_coverage_revision_values : "ownerId"
access_items ||..o{ access_environment_revision_values : "systemId"
access_revisions ||..o| access_environment_revision_values : "ownerId"
access_items |o..o{ access_grant_revision_values : "accountId"
access_items |o..o{ access_grant_revision_values : "groupId"
access_items ||..o{ access_grant_revision_values : "permissionId"
access_items ||..o{ access_grant_revision_values : "resourceId"
access_revisions ||..o| access_grant_revision_values : "ownerId"
access_items |o..o{ access_group_revision_values : "environmentId"
access_items ||..o{ access_group_revision_values : "systemId"
access_items |o..o{ access_group_revision_values : "templateId"
access_revisions ||..o| access_group_revision_values : "ownerId"
access_items ||..o{ access_membership_revision_values : "accountId"
access_items ||..o{ access_membership_revision_values : "groupId"
access_revisions ||..o| access_membership_revision_values : "ownerId"
access_items ||..o{ access_need_revision_permissions : "permissionId"
access_need_revision_values ||..o{ access_need_revision_permissions : "ownerId"
access_items ||..o{ access_need_revision_values : "resourceId"
access_revisions ||..o| access_need_revision_values : "ownerId"
company_contacts ||..o{ access_need_revision_values : "personId"
access_items ||..o{ access_permission_revision_values : "resourceTypeId"
access_revisions ||..o| access_permission_revision_values : "ownerId"
access_items |o..o{ access_resource_revision_values : "environmentId"
access_items ||..o{ access_resource_revision_values : "resourceTypeId"
access_items |o..o{ access_resource_revision_values : "systemId"
access_revisions ||..o| access_resource_revision_values : "ownerId"
access_revisions ||..o| access_resource_type_revision_values : "ownerId"
access_items ||..o{ access_revisions : "itemId"
users ||..o{ access_revisions : "actorId"
access_revisions ||..o| access_system_revision_values : "ownerId"
access_items |o..o{ access_template_revision_values : "systemId"
access_revisions ||..o| access_template_revision_values : "ownerId"
Cuentas y accesos: estado actual
Tablas propias: access_account_person_values, access_account_values, access_coverage_values, access_environment_values, access_grant_values, access_group_values, access_items, access_membership_values, access_need_permissions, access_need_values, access_permission_values, access_person_references, access_references, access_resource_type_values, access_resource_values, access_system_values, access_template_values, access_workspaces.
erDiagram
direction LR
access_account_person_values {
char ownerId PK,FK
char accountId FK
char personId FK
}
access_account_values {
char ownerId PK,FK
char systemId FK
char environmentId FK "nullable"
}
access_coverage_values {
char ownerId PK,FK
char needId FK
char grantId FK
char accountPersonId FK
char membershipId FK "nullable"
}
access_environment_values {
char ownerId PK,FK
char systemId FK
}
access_grant_values {
char ownerId PK,FK
char resourceId FK
char permissionId FK
char accountId FK "nullable"
char groupId FK "nullable"
}
access_group_values {
char ownerId PK,FK
char systemId FK
char environmentId FK "nullable"
char templateId FK "nullable"
}
access_items {
char id PK
char workspaceId FK
}
access_membership_values {
char ownerId PK,FK
char accountId FK
char groupId FK
}
access_need_permissions {
char ownerId PK,FK
int position PK
char permissionId FK
}
access_need_values {
char ownerId PK,FK
char personId FK
char resourceId FK
}
access_permission_values {
char ownerId PK,FK
char resourceTypeId FK
}
access_person_references {
char itemId PK,FK
char personId PK,FK
}
access_references {
int id PK
char itemId FK
char targetId FK
}
access_resource_type_values {
char ownerId PK,FK
}
access_resource_values {
char ownerId PK,FK
char resourceTypeId FK
char systemId FK "nullable"
char environmentId FK "nullable"
}
access_system_values {
char ownerId PK,FK
}
access_template_values {
char ownerId PK,FK
char systemId FK "nullable"
}
access_workspaces {
char id PK
char companyId FK "nullable"
}
companies {
char id PK
}
company_contacts {
char id PK
char companyId FK
}
access_items ||..o{ access_account_person_values : "accountId"
access_items ||..o| access_account_person_values : "ownerId"
company_contacts ||..o{ access_account_person_values : "personId"
access_items |o..o{ access_account_values : "environmentId"
access_items ||..o| access_account_values : "ownerId"
access_items ||..o{ access_account_values : "systemId"
access_items ||..o{ access_coverage_values : "accountPersonId"
access_items ||..o{ access_coverage_values : "grantId"
access_items |o..o{ access_coverage_values : "membershipId"
access_items ||..o{ access_coverage_values : "needId"
access_items ||..o| access_coverage_values : "ownerId"
access_items ||..o| access_environment_values : "ownerId"
access_items ||..o{ access_environment_values : "systemId"
access_items |o..o{ access_grant_values : "accountId"
access_items |o..o{ access_grant_values : "groupId"
access_items ||..o| access_grant_values : "ownerId"
access_items ||..o{ access_grant_values : "permissionId"
access_items ||..o{ access_grant_values : "resourceId"
access_items |o..o{ access_group_values : "environmentId"
access_items ||..o| access_group_values : "ownerId"
access_items ||..o{ access_group_values : "systemId"
access_items |o..o{ access_group_values : "templateId"
access_workspaces ||..o{ access_items : "workspaceId"
access_items ||..o{ access_membership_values : "accountId"
access_items ||..o{ access_membership_values : "groupId"
access_items ||..o| access_membership_values : "ownerId"
access_items ||..o{ access_need_permissions : "permissionId"
access_need_values ||..o{ access_need_permissions : "ownerId"
access_items ||..o| access_need_values : "ownerId"
access_items ||..o{ access_need_values : "resourceId"
company_contacts ||..o{ access_need_values : "personId"
access_items ||..o| access_permission_values : "ownerId"
access_items ||..o{ access_permission_values : "resourceTypeId"
access_items ||..o{ access_person_references : "itemId"
company_contacts ||..o{ access_person_references : "personId"
access_items ||..o{ access_references : "itemId"
access_items ||..o{ access_references : "targetId"
access_items ||..o| access_resource_type_values : "ownerId"
access_items |o..o{ access_resource_values : "environmentId"
access_items ||..o| access_resource_values : "ownerId"
access_items ||..o{ access_resource_values : "resourceTypeId"
access_items |o..o{ access_resource_values : "systemId"
access_items ||..o| access_system_values : "ownerId"
access_items ||..o| access_template_values : "ownerId"
access_items |o..o{ access_template_values : "systemId"
companies |o..o{ access_workspaces : "companyId"
Vistas SQL de cuentas y accesos
Tablas propias: access_current_values, access_historical_values.
erDiagram
direction LR
access_current_values
access_historical_values
Correo y configuraciones
Tablas propias: application_configuration_revisions, application_configurations, certificate_configuration_revisions, certificate_configurations, folder_mapping_revisions, folder_mappings, mail_configuration_revisions, mail_configurations, mailbox_revisions, mailbox_use_revisions, mailbox_uses, mailboxes, printer_configuration_revisions, printer_configurations, software_installation_revisions, software_installations.
erDiagram
direction LR
access_items {
char id PK
char workspaceId FK
}
application_configuration_revisions {
char id PK
char configurationId FK
char actorId FK
char profileId FK "nullable"
char resourceId FK "nullable"
}
application_configurations {
char id PK
char companyId FK
char profileId FK
char resourceId FK
}
assets {
char id PK
char companyId FK
char templateId FK
char siteId FK "nullable"
char brandId FK "nullable"
}
certificate_configuration_revisions {
char id PK
char configurationId FK
char actorId FK
char profileId FK "nullable"
char resourceId FK "nullable"
}
certificate_configurations {
char id PK
char companyId FK
char profileId FK
char resourceId FK
}
companies {
char id PK
}
company_contacts {
char id PK
char companyId FK
}
folder_mapping_revisions {
char id PK
char mappingId FK
char actorId FK
char profileId FK "nullable"
char needId FK "nullable"
}
folder_mappings {
char id PK
char companyId FK
char profileId FK
char needId FK
}
mail_configuration_revisions {
char id PK
char configurationId FK
char actorId FK
char personId FK "nullable"
char accountId FK "nullable"
char assetId FK "nullable"
char profileId FK "nullable"
char mailboxId FK "nullable"
}
mail_configurations {
char id PK
char companyId FK
char personId FK "nullable"
char accountId FK "nullable"
char assetId FK "nullable"
char profileId FK "nullable"
char mailboxId FK "nullable"
}
mailbox_revisions {
char id PK
char itemId FK
char actorId FK
char accountId FK "nullable"
}
mailbox_use_revisions {
char id PK
char itemId FK
char actorId FK
char mailboxId FK "nullable"
char personId FK "nullable"
}
mailbox_uses {
char id PK
char companyId FK
char mailboxId FK
char personId FK
}
mailboxes {
char id PK
char companyId FK
char accountId FK "nullable"
}
printer_configuration_revisions {
char id PK
char configurationId FK
char actorId FK
char profileId FK "nullable"
char printerId FK "nullable"
}
printer_configurations {
char id PK
char companyId FK
char profileId FK
char printerId FK
}
resources {
char id PK
char companyId FK
char templateId FK
char addressFieldId FK "nullable"
char contextFieldId FK "nullable"
char accountId FK "nullable"
char referenceFieldId FK "nullable"
char resourceTypeId FK "nullable"
char systemId FK "nullable"
char environmentId FK "nullable"
}
software_installation_revisions {
char id PK
char configurationId FK
char assetId FK
char resourceId FK
char actorId FK
char licenseResourceId FK "nullable"
}
software_installations {
char id PK
char companyId FK
char assetId FK
char resourceId FK
char licenseResourceId FK "nullable"
}
users {
char id PK
}
work_profiles {
char id PK
char companyId FK
char personId FK
char accountId FK "nullable"
char assetId FK
}
application_configurations ||..o{ application_configuration_revisions : "configurationId"
resources |o..o{ application_configuration_revisions : "resourceId"
users ||..o{ application_configuration_revisions : "actorId"
work_profiles |o..o{ application_configuration_revisions : "profileId"
companies ||..o{ application_configurations : "companyId"
resources ||..o{ application_configurations : "resourceId"
work_profiles ||..o{ application_configurations : "profileId"
certificate_configurations ||..o{ certificate_configuration_revisions : "configurationId"
resources |o..o{ certificate_configuration_revisions : "resourceId"
users ||..o{ certificate_configuration_revisions : "actorId"
work_profiles |o..o{ certificate_configuration_revisions : "profileId"
companies ||..o{ certificate_configurations : "companyId"
resources ||..o{ certificate_configurations : "resourceId"
work_profiles ||..o{ certificate_configurations : "profileId"
access_items |o..o{ folder_mapping_revisions : "needId"
folder_mappings ||..o{ folder_mapping_revisions : "mappingId"
users ||..o{ folder_mapping_revisions : "actorId"
work_profiles |o..o{ folder_mapping_revisions : "profileId"
access_items ||..o{ folder_mappings : "needId"
companies ||..o{ folder_mappings : "companyId"
work_profiles ||..o{ folder_mappings : "profileId"
access_items |o..o{ mail_configuration_revisions : "accountId"
assets |o..o{ mail_configuration_revisions : "assetId"
company_contacts |o..o{ mail_configuration_revisions : "personId"
mail_configurations ||..o{ mail_configuration_revisions : "configurationId"
mailboxes |o..o{ mail_configuration_revisions : "mailboxId"
users ||..o{ mail_configuration_revisions : "actorId"
work_profiles |o..o{ mail_configuration_revisions : "profileId"
access_items |o..o{ mail_configurations : "accountId"
assets |o..o{ mail_configurations : "assetId"
companies ||..o{ mail_configurations : "companyId"
company_contacts |o..o{ mail_configurations : "personId"
mailboxes |o..o{ mail_configurations : "mailboxId"
work_profiles |o..o{ mail_configurations : "profileId"
access_items |o..o{ mailbox_revisions : "accountId"
mailboxes ||..o{ mailbox_revisions : "itemId"
users ||..o{ mailbox_revisions : "actorId"
company_contacts |o..o{ mailbox_use_revisions : "personId"
mailbox_uses ||..o{ mailbox_use_revisions : "itemId"
mailboxes |o..o{ mailbox_use_revisions : "mailboxId"
users ||..o{ mailbox_use_revisions : "actorId"
companies ||..o{ mailbox_uses : "companyId"
company_contacts ||..o{ mailbox_uses : "personId"
mailboxes ||..o{ mailbox_uses : "mailboxId"
access_items |o..o{ mailboxes : "accountId"
companies ||..o{ mailboxes : "companyId"
assets |o..o{ printer_configuration_revisions : "printerId"
printer_configurations ||..o{ printer_configuration_revisions : "configurationId"
users ||..o{ printer_configuration_revisions : "actorId"
work_profiles |o..o{ printer_configuration_revisions : "profileId"
assets ||..o{ printer_configurations : "printerId"
companies ||..o{ printer_configurations : "companyId"
work_profiles ||..o{ printer_configurations : "profileId"
assets ||..o{ software_installation_revisions : "assetId"
resources |o..o{ software_installation_revisions : "licenseResourceId"
resources ||..o{ software_installation_revisions : "resourceId"
software_installations ||..o{ software_installation_revisions : "configurationId"
users ||..o{ software_installation_revisions : "actorId"
assets ||..o{ software_installations : "assetId"
companies ||..o{ software_installations : "companyId"
resources |o..o{ software_installations : "licenseResourceId"
resources ||..o{ software_installations : "resourceId"
Activos y catálogo
Tablas propias: asset_availability, asset_brands, asset_catalogs, asset_characteristics, asset_definitions, asset_field_choices, asset_relationships, asset_revision_characteristics, asset_revisions, asset_specification_field_choices, asset_specification_fields, asset_specification_sections, asset_support, asset_support_revisions, asset_template_fields, asset_template_sections, assets, brand_catalog_lock.
erDiagram
direction LR
asset_availability {
char id PK
char catalogId FK
char companyId FK
char definitionId FK
}
asset_brands {
char id PK
}
asset_catalogs {
char id PK
}
asset_characteristics {
char assetId PK,FK
char fieldId PK,FK
}
asset_definitions {
char id PK
char catalogId FK
char companyId FK "nullable"
}
asset_field_choices {
char fieldId PK,FK
int position PK
}
asset_relationships {
char id PK
char companyId FK
char sourceId FK
char targetId FK
char typeId FK
char createdBy FK
char endedBy FK "nullable"
}
asset_revision_characteristics {
char revisionId PK,FK
char assetId FK
char fieldId PK,FK
}
asset_revisions {
char id PK
char assetId FK
char actorId FK
char siteId FK "nullable"
char brandId FK "nullable"
char templateId FK
}
asset_specification_field_choices {
char assetId PK,FK
char fieldId PK,FK
int position PK
}
asset_specification_fields {
char assetId PK,FK
char fieldId PK,FK
char sectionId FK "nullable"
}
asset_specification_sections {
char assetId PK,FK
char id PK
}
asset_support {
char id PK
char companyId FK
char assetId FK
char resourceId FK
}
asset_support_revisions {
char id PK
char connectionId FK
char actorId FK
char resourceId FK
}
asset_template_fields {
char id PK
char templateId FK
char fieldId FK
char sectionId FK "nullable"
}
asset_template_sections {
char id PK
char templateId FK
}
assets {
char id PK
char companyId FK
char templateId FK
char siteId FK "nullable"
char brandId FK "nullable"
}
brand_catalog_lock {
int id PK
}
companies {
char id PK
}
company_sites {
char id PK
char companyId FK
}
resources {
char id PK
char companyId FK
char templateId FK
char addressFieldId FK "nullable"
char contextFieldId FK "nullable"
char accountId FK "nullable"
char referenceFieldId FK "nullable"
char resourceTypeId FK "nullable"
char systemId FK "nullable"
char environmentId FK "nullable"
}
users {
char id PK
}
asset_catalogs ||..o{ asset_availability : "catalogId"
asset_definitions ||..o{ asset_availability : "definitionId"
companies ||..o{ asset_availability : "companyId"
asset_definitions ||..o{ asset_characteristics : "fieldId"
asset_specification_fields ||..o| asset_characteristics : "assetId, fieldId"
assets ||..o{ asset_characteristics : "assetId"
asset_catalogs ||..o{ asset_definitions : "catalogId"
companies |o..o{ asset_definitions : "companyId"
asset_definitions ||..o{ asset_field_choices : "fieldId"
asset_definitions ||..o{ asset_relationships : "typeId"
assets ||..o{ asset_relationships : "companyId, sourceId"
assets ||..o{ asset_relationships : "companyId, targetId"
assets ||..o{ asset_relationships : "sourceId"
assets ||..o{ asset_relationships : "targetId"
companies ||..o{ asset_relationships : "companyId"
users ||..o{ asset_relationships : "createdBy"
users |o..o{ asset_relationships : "endedBy"
asset_definitions ||..o{ asset_revision_characteristics : "fieldId"
asset_revisions ||..o{ asset_revision_characteristics : "revisionId"
asset_revisions ||..o{ asset_revision_characteristics : "revisionId, assetId"
asset_specification_fields ||..o{ asset_revision_characteristics : "assetId, fieldId"
assets ||..o{ asset_revision_characteristics : "assetId"
asset_brands |o..o{ asset_revisions : "brandId"
asset_definitions ||..o{ asset_revisions : "templateId"
assets ||..o{ asset_revisions : "assetId"
company_sites |o..o{ asset_revisions : "siteId"
users ||..o{ asset_revisions : "actorId"
asset_definitions ||..o{ asset_specification_field_choices : "fieldId"
asset_specification_fields ||..o{ asset_specification_field_choices : "assetId, fieldId"
assets ||..o{ asset_specification_field_choices : "assetId"
asset_definitions ||..o{ asset_specification_fields : "fieldId"
asset_specification_sections |o..o{ asset_specification_fields : "assetId, sectionId"
assets ||..o{ asset_specification_fields : "assetId"
assets ||..o{ asset_specification_sections : "assetId"
assets ||..o{ asset_support : "assetId"
assets ||..o{ asset_support : "companyId, assetId"
companies ||..o{ asset_support : "companyId"
resources ||..o{ asset_support : "companyId, resourceId"
resources ||..o{ asset_support : "resourceId"
asset_support ||..o{ asset_support_revisions : "connectionId"
resources ||..o{ asset_support_revisions : "resourceId"
users ||..o{ asset_support_revisions : "actorId"
asset_definitions ||..o{ asset_template_fields : "fieldId"
asset_definitions ||..o{ asset_template_fields : "templateId"
asset_template_sections |o..o{ asset_template_fields : "sectionId"
asset_template_sections |o..o{ asset_template_fields : "templateId, sectionId"
asset_definitions ||..o{ asset_template_sections : "templateId"
asset_brands |o..o{ assets : "brandId"
asset_definitions ||..o{ assets : "templateId"
companies ||..o{ assets : "companyId"
company_sites |o..o{ assets : "siteId"
Compañías y personas
Tablas propias: companies, company_contacts, company_departments, company_logos, company_sites, department_assignment_revisions, person_department_assignments, person_photos.
erDiagram
direction LR
companies {
char id PK
}
company_contacts {
char id PK
char companyId FK
}
company_departments {
char id PK
char companyId FK
}
company_logos {
char companyId PK,FK
}
company_sites {
char id PK
char companyId FK
}
department_assignment_revisions {
char id PK
char assignmentId FK
}
person_department_assignments {
char id PK
char companyId FK
char personId FK
char departmentId FK
}
person_photos {
char personId PK,FK
char companyId FK
}
companies ||..o{ company_contacts : "companyId"
companies ||..o{ company_departments : "companyId"
companies ||..o| company_logos : "companyId"
companies ||..o{ company_sites : "companyId"
person_department_assignments ||..o{ department_assignment_revisions : "assignmentId"
companies ||..o{ person_department_assignments : "companyId"
company_contacts ||..o{ person_department_assignments : "personId, companyId"
company_departments ||..o{ person_department_assignments : "departmentId, companyId"
company_contacts ||..o| person_photos : "personId, companyId"
Usuarios y sesión
Tablas propias: http_sessions, identity_state, users.
erDiagram
direction LR
http_sessions {
varchar sid PK
char userId FK "nullable"
}
identity_state {
int id PK
char initialAdminId FK "nullable"
}
users {
char id PK
}
users |o..o{ http_sessions : "userId"
users |o..o{ identity_state : "initialAdminId"
Tickets e intervenciones
Tablas propias: intervention_counter, intervention_procedure_steps, intervention_procedures, intervention_revision_steps, intervention_revision_targets, intervention_revisions, intervention_steps, intervention_targets, intervention_template_lock, intervention_template_revision_steps, intervention_template_revisions, intervention_template_steps, intervention_templates, interventions, ticket_counter, ticket_revision_targets, ticket_revisions, ticket_targets, tickets.
erDiagram
direction LR
assets {
char id PK
char companyId FK
char templateId FK
char siteId FK "nullable"
char brandId FK "nullable"
}
companies {
char id PK
}
company_contacts {
char id PK
char companyId FK
}
intervention_counter {
int id PK
}
intervention_procedure_steps {
char ownerId PK,FK
char stepId PK
}
intervention_procedures {
char interventionId PK,FK
char templateId FK
char revisionId FK
}
intervention_revision_steps {
char ownerId PK,FK
char stepId PK
}
intervention_revision_targets {
char ownerId PK,FK
int position PK
char personId FK "nullable"
char workstationId FK "nullable"
char assetId FK "nullable"
char resourceId FK "nullable"
}
intervention_revisions {
char id PK
char interventionId FK
char actorId FK
char ticketId FK "nullable"
char assigneeId FK "nullable"
}
intervention_steps {
char ownerId PK,FK
char stepId PK
}
intervention_targets {
char ownerId PK,FK
int position PK
char personId FK "nullable"
char workstationId FK "nullable"
char assetId FK "nullable"
char resourceId FK "nullable"
}
intervention_template_lock {
int id PK
}
intervention_template_revision_steps {
char ownerId PK,FK
char stepId PK
}
intervention_template_revisions {
char id PK
char templateId FK
char actorId FK "nullable"
}
intervention_template_steps {
char ownerId PK,FK
char stepId PK
}
intervention_templates {
char id PK
char companyId FK "nullable"
}
interventions {
char id PK
char companyId FK
char ticketId FK "nullable"
char assigneeId FK "nullable"
}
resources {
char id PK
char companyId FK
char templateId FK
char addressFieldId FK "nullable"
char contextFieldId FK "nullable"
char accountId FK "nullable"
char referenceFieldId FK "nullable"
char resourceTypeId FK "nullable"
char systemId FK "nullable"
char environmentId FK "nullable"
}
ticket_counter {
int id PK
}
ticket_revision_targets {
char ownerId PK,FK
int position PK
char personId FK "nullable"
char workstationId FK "nullable"
char assetId FK "nullable"
char resourceId FK "nullable"
}
ticket_revisions {
char id PK
char ticketId FK
char actorId FK
char requesterId FK "nullable"
char assigneeId FK "nullable"
}
ticket_targets {
char ownerId PK,FK
int position PK
char personId FK "nullable"
char workstationId FK "nullable"
char assetId FK "nullable"
char resourceId FK "nullable"
}
tickets {
char id PK
char companyId FK
char requesterId FK "nullable"
char assigneeId FK "nullable"
}
users {
char id PK
}
workstations {
char id PK
char companyId FK
char siteId FK "nullable"
char personId FK "nullable"
char computerAssetId FK "nullable"
}
intervention_procedures ||..o{ intervention_procedure_steps : "ownerId"
intervention_template_revisions ||..o{ intervention_procedures : "revisionId"
intervention_template_revisions ||..o{ intervention_procedures : "templateId, revisionId"
intervention_templates ||..o{ intervention_procedures : "templateId"
interventions ||..o| intervention_procedures : "interventionId"
intervention_revisions ||..o{ intervention_revision_steps : "ownerId"
assets |o..o{ intervention_revision_targets : "assetId"
company_contacts |o..o{ intervention_revision_targets : "personId"
intervention_revisions ||..o{ intervention_revision_targets : "ownerId"
resources |o..o{ intervention_revision_targets : "resourceId"
workstations |o..o{ intervention_revision_targets : "workstationId"
interventions ||..o{ intervention_revisions : "interventionId"
tickets |o..o{ intervention_revisions : "ticketId"
users ||..o{ intervention_revisions : "actorId"
users |o..o{ intervention_revisions : "assigneeId"
interventions ||..o{ intervention_steps : "ownerId"
assets |o..o{ intervention_targets : "assetId"
company_contacts |o..o{ intervention_targets : "personId"
interventions ||..o{ intervention_targets : "ownerId"
resources |o..o{ intervention_targets : "resourceId"
workstations |o..o{ intervention_targets : "workstationId"
intervention_template_revisions ||..o{ intervention_template_revision_steps : "ownerId"
intervention_templates ||..o{ intervention_template_revisions : "templateId"
users |o..o{ intervention_template_revisions : "actorId"
intervention_templates ||..o{ intervention_template_steps : "ownerId"
companies |o..o{ intervention_templates : "companyId"
companies ||..o{ interventions : "companyId"
tickets |o..o{ interventions : "ticketId"
users |o..o{ interventions : "assigneeId"
assets |o..o{ ticket_revision_targets : "assetId"
company_contacts |o..o{ ticket_revision_targets : "personId"
resources |o..o{ ticket_revision_targets : "resourceId"
ticket_revisions ||..o{ ticket_revision_targets : "ownerId"
workstations |o..o{ ticket_revision_targets : "workstationId"
company_contacts |o..o{ ticket_revisions : "requesterId"
tickets ||..o{ ticket_revisions : "ticketId"
users ||..o{ ticket_revisions : "actorId"
users |o..o{ ticket_revisions : "assigneeId"
assets |o..o{ ticket_targets : "assetId"
company_contacts |o..o{ ticket_targets : "personId"
resources |o..o{ ticket_targets : "resourceId"
tickets ||..o{ ticket_targets : "ownerId"
workstations |o..o{ ticket_targets : "workstationId"
companies ||..o{ tickets : "companyId"
company_contacts |o..o{ tickets : "requesterId"
users |o..o{ tickets : "assigneeId"
Procesos de personas
Tablas propias: person_process_revision_tasks, person_process_revisions, person_process_tasks, person_processes, process_catalog_lock, process_template_instructions, process_template_revision_instructions, process_template_revisions, process_templates.
erDiagram
direction LR
companies {
char id PK
}
company_contacts {
char id PK
char companyId FK
}
person_process_revision_tasks {
char ownerId PK,FK
char taskId PK
}
person_process_revisions {
char id PK
char actorId FK "nullable"
char itemId FK
char personId FK "nullable"
char templateId FK "nullable"
}
person_process_tasks {
char ownerId PK,FK
char taskId PK
}
person_processes {
char id PK
char companyId FK
char personId FK
char templateId FK
}
process_catalog_lock {
int id PK
}
process_template_instructions {
char ownerId PK,FK
int position PK
}
process_template_revision_instructions {
char ownerId PK,FK
int position PK
}
process_template_revisions {
char id PK
char actorId FK "nullable"
char itemId FK
}
process_templates {
char id PK
}
users {
char id PK
}
person_process_revisions ||..o{ person_process_revision_tasks : "ownerId"
company_contacts |o..o{ person_process_revisions : "personId"
person_processes ||..o{ person_process_revisions : "itemId"
process_templates |o..o{ person_process_revisions : "templateId"
users |o..o{ person_process_revisions : "actorId"
person_processes ||..o{ person_process_tasks : "ownerId"
companies ||..o{ person_processes : "companyId"
company_contacts ||..o{ person_processes : "personId"
process_templates ||..o{ person_processes : "templateId"
process_templates ||..o{ process_template_instructions : "ownerId"
process_template_revisions ||..o{ process_template_revision_instructions : "ownerId"
process_templates ||..o{ process_template_revisions : "itemId"
users |o..o{ process_template_revisions : "actorId"
Teletrabajo y conexiones remotas
Tablas propias: remote_connection_revisions, remote_connections, telework_authorization_revisions, telework_authorizations.
erDiagram
direction LR
assets {
char id PK
char companyId FK
char templateId FK
char siteId FK "nullable"
char brandId FK "nullable"
}
companies {
char id PK
}
company_contacts {
char id PK
char companyId FK
}
company_sites {
char id PK
char companyId FK
}
remote_connection_revisions {
char id PK
char connectionId FK
char actorId FK
char personId FK "nullable"
char sourceAssetId FK "nullable"
char targetAssetId FK "nullable"
char targetResourceId FK "nullable"
char siteId FK "nullable"
}
remote_connections {
char id PK
char companyId FK
char personId FK
char sourceAssetId FK "nullable"
char targetAssetId FK "nullable"
char targetResourceId FK "nullable"
char siteId FK "nullable"
}
resources {
char id PK
char companyId FK
char templateId FK
char addressFieldId FK "nullable"
char contextFieldId FK "nullable"
char accountId FK "nullable"
char referenceFieldId FK "nullable"
char resourceTypeId FK "nullable"
char systemId FK "nullable"
char environmentId FK "nullable"
}
telework_authorization_revisions {
char id PK
char authorizationId FK
char actorId FK
char personId FK "nullable"
}
telework_authorizations {
char id PK
char companyId FK
char personId FK
}
users {
char id PK
}
assets |o..o{ remote_connection_revisions : "sourceAssetId"
assets |o..o{ remote_connection_revisions : "targetAssetId"
company_contacts |o..o{ remote_connection_revisions : "personId"
company_sites |o..o{ remote_connection_revisions : "siteId"
remote_connections ||..o{ remote_connection_revisions : "connectionId"
resources |o..o{ remote_connection_revisions : "targetResourceId"
users ||..o{ remote_connection_revisions : "actorId"
assets |o..o{ remote_connections : "sourceAssetId"
assets |o..o{ remote_connections : "targetAssetId"
companies ||..o{ remote_connections : "companyId"
company_contacts ||..o{ remote_connections : "personId"
company_sites |o..o{ remote_connections : "siteId"
resources |o..o{ remote_connections : "targetResourceId"
company_contacts |o..o{ telework_authorization_revisions : "personId"
telework_authorizations ||..o{ telework_authorization_revisions : "authorizationId"
users ||..o{ telework_authorization_revisions : "actorId"
companies ||..o{ telework_authorizations : "companyId"
company_contacts ||..o| telework_authorizations : "personId"
Recursos y catálogo
Tablas propias: resource_availability, resource_catalogs, resource_characteristics, resource_definitions, resource_field_choices, resource_revision_characteristics, resource_revisions, resource_specification_field_choices, resource_specification_fields, resource_specification_sections, resource_template_fields, resource_template_sections, resources.
erDiagram
direction LR
access_items {
char id PK
char workspaceId FK
}
companies {
char id PK
}
resource_availability {
char id PK
char catalogId FK
char companyId FK
char definitionId FK
}
resource_catalogs {
char id PK
}
resource_characteristics {
char resourceId PK,FK
char fieldId PK,FK
}
resource_definitions {
char id PK
char catalogId FK
char companyId FK "nullable"
}
resource_field_choices {
char fieldId PK,FK
int position PK
}
resource_revision_characteristics {
char revisionId PK,FK
char resourceId FK
char fieldId PK,FK
}
resource_revisions {
char id PK
char resourceId FK
char actorId FK
char addressFieldId FK "nullable"
char contextFieldId FK "nullable"
char accountId FK "nullable"
char referenceFieldId FK "nullable"
char resourceTypeId FK "nullable"
char systemId FK "nullable"
char environmentId FK "nullable"
char templateId FK "nullable"
}
resource_specification_field_choices {
char resourceId PK,FK
char fieldId PK,FK
int position PK
}
resource_specification_fields {
char resourceId PK,FK
char fieldId PK,FK
}
resource_specification_sections {
char resourceId PK,FK
char id PK
}
resource_template_fields {
char id PK
char templateId FK
char fieldId FK
char sectionId FK "nullable"
}
resource_template_sections {
char id PK
char templateId PK,FK
}
resources {
char id PK
char companyId FK
char templateId FK
char addressFieldId FK "nullable"
char contextFieldId FK "nullable"
char accountId FK "nullable"
char referenceFieldId FK "nullable"
char resourceTypeId FK "nullable"
char systemId FK "nullable"
char environmentId FK "nullable"
}
users {
char id PK
}
companies ||..o{ resource_availability : "companyId"
resource_catalogs ||..o{ resource_availability : "catalogId"
resource_definitions ||..o{ resource_availability : "definitionId"
resource_definitions ||..o{ resource_characteristics : "fieldId"
resources ||..o{ resource_characteristics : "resourceId"
companies |o..o{ resource_definitions : "companyId"
resource_catalogs ||..o{ resource_definitions : "catalogId"
resource_definitions ||..o{ resource_field_choices : "fieldId"
resource_definitions ||..o{ resource_revision_characteristics : "fieldId"
resource_revisions ||..o{ resource_revision_characteristics : "revisionId"
resources ||..o{ resource_revision_characteristics : "resourceId"
access_items |o..o{ resource_revisions : "accountId"
access_items |o..o{ resource_revisions : "environmentId"
access_items |o..o{ resource_revisions : "resourceTypeId"
access_items |o..o{ resource_revisions : "systemId"
resource_definitions |o..o{ resource_revisions : "addressFieldId"
resource_definitions |o..o{ resource_revisions : "contextFieldId"
resource_definitions |o..o{ resource_revisions : "referenceFieldId"
resource_definitions |o..o{ resource_revisions : "templateId"
resources ||..o{ resource_revisions : "resourceId"
users ||..o{ resource_revisions : "actorId"
resource_definitions ||..o{ resource_specification_field_choices : "fieldId"
resources ||..o{ resource_specification_field_choices : "resourceId"
resource_definitions ||..o{ resource_specification_fields : "fieldId"
resources ||..o{ resource_specification_fields : "resourceId"
resources ||..o{ resource_specification_sections : "resourceId"
resource_definitions ||..o{ resource_template_fields : "fieldId"
resource_definitions ||..o{ resource_template_fields : "templateId"
resource_template_sections |o..o{ resource_template_fields : "templateId, sectionId"
resource_definitions ||..o{ resource_template_sections : "templateId"
access_items |o..o{ resources : "accountId"
access_items |o..o{ resources : "environmentId"
access_items |o..o{ resources : "resourceTypeId"
access_items |o..o{ resources : "systemId"
companies ||..o{ resources : "companyId"
resource_definitions |o..o{ resources : "addressFieldId"
resource_definitions |o..o{ resources : "contextFieldId"
resource_definitions |o..o{ resources : "referenceFieldId"
resource_definitions ||..o{ resources : "templateId"
Perfiles de usuario
Tablas propias: work_profile_revisions, work_profiles.
erDiagram
direction LR
access_items {
char id PK
char workspaceId FK
}
assets {
char id PK
char companyId FK
char templateId FK
char siteId FK "nullable"
char brandId FK "nullable"
}
companies {
char id PK
}
company_contacts {
char id PK
char companyId FK
}
users {
char id PK
}
work_profile_revisions {
char id PK
char profileId FK
char accountId FK "nullable"
char actorId FK
char personId FK "nullable"
char assetId FK "nullable"
}
work_profiles {
char id PK
char companyId FK
char personId FK
char accountId FK "nullable"
char assetId FK
}
access_items |o..o{ work_profile_revisions : "accountId"
assets |o..o{ work_profile_revisions : "assetId"
company_contacts |o..o{ work_profile_revisions : "personId"
users ||..o{ work_profile_revisions : "actorId"
work_profiles ||..o{ work_profile_revisions : "profileId"
access_items |o..o{ work_profiles : "accountId"
assets ||..o{ work_profiles : "assetId"
companies ||..o{ work_profiles : "companyId"
company_contacts ||..o{ work_profiles : "personId"
Puestos de trabajo
Tablas propias: workstation_assets, workstation_members, workstation_revision_members, workstation_revisions, workstations.
erDiagram
direction LR
assets {
char id PK
char companyId FK
char templateId FK
char siteId FK "nullable"
char brandId FK "nullable"
}
companies {
char id PK
}
company_contacts {
char id PK
char companyId FK
}
company_sites {
char id PK
char companyId FK
}
users {
char id PK
}
workstation_assets {
char workstationId PK,FK
char companyId FK
char assetId PK,FK
}
workstation_members {
char workstationId PK,FK
char assetId PK,FK
}
workstation_revision_members {
char revisionId PK,FK
char assetId PK,FK
}
workstation_revisions {
char id PK
char workstationId FK
char actorId FK
char siteId FK "nullable"
char personId FK "nullable"
char computerAssetId FK "nullable"
}
workstations {
char id PK
char companyId FK
char siteId FK "nullable"
char personId FK "nullable"
char computerAssetId FK "nullable"
}
assets ||..o{ workstation_assets : "assetId"
assets ||..o{ workstation_assets : "companyId, assetId"
companies ||..o{ workstation_assets : "companyId"
workstations ||..o{ workstation_assets : "companyId, workstationId"
workstations ||..o{ workstation_assets : "workstationId"
assets ||..o{ workstation_members : "assetId"
workstations ||..o{ workstation_members : "workstationId"
assets ||..o{ workstation_revision_members : "assetId"
workstation_revisions ||..o{ workstation_revision_members : "revisionId"
assets |o..o{ workstation_revisions : "computerAssetId"
company_contacts |o..o{ workstation_revisions : "personId"
company_sites |o..o{ workstation_revisions : "siteId"
users ||..o{ workstation_revisions : "actorId"
workstations ||..o{ workstation_revisions : "workstationId"
assets |o..o{ workstations : "computerAssetId"
companies ||..o{ workstations : "companyId"
company_contacts |o..o{ workstations : "personId"
company_sites |o..o{ workstations : "siteId"
Observaciones del esquema físico
Los 132 objetos consultados son 130 tablas y 2 vistas SQL: access_current_values y access_historical_values. Las vistas no tienen FK propias y se representan como objetos independientes; no se inventan relaciones físicas para ellas.
Se han encontrado 17 relaciones con varias restricciones FK equivalentes: 699 restricciones adicionales. Se han agrupado únicamente en la representación; no se han eliminado. El diccionario conserva todos los nombres de restricciones. Conviene revisar por separado el origen de estas duplicaciones.
Solo se dibujan relaciones declaradas en MariaDB. Un identificador sin FK no implica una relación física garantizada; las referencias polimórficas y las validaciones de aplicación pueden tener relaciones adicionales. Las tablas de revisiones forman parte del esquema actual y se incluyen. Esta documentación no implica que exista ya la auditoría centralizada diseñada para una implementación futura.
Validación
Generación verificada contra la misma captura de metadatos: 130 tablas y 2 vistas SQL, 999 columnas y 355 relaciones distintas incluidas en el archivo completo; todas las tablas asignadas a un área. Las reglas ON DELETE/ON UPDATE se recogen en el diccionario. No se han ejecutado migraciones ni cambios de datos.