metis-desk/docs/diagrama-entidad-relacion.md
David ba562ad06f Refactor documentation for clarity and accuracy
- Updated examples in "estructura-web-por-entidades-y-operaciones.md" to reflect correct entity names and directory structures.
- Clarified modal usage and component interactions in "impresoras-del-perfil.md".
- Adjusted component descriptions in "logotipos-de-companias.md" for consistency.
- Revised persistence model details in "normalizacion-de-la-persistencia.md" to remove outdated references and clarify relationships.
- Enhanced dialog patterns in "patron-de-dialogos.md" with specific guidelines for field labels and validation.
- Specified component reuse in "patron-de-listados-de-entidades.md" to include @repo/rdx-ui components.
- Updated implementation status in "personas-y-departamentos.md" to reflect current features and pending tasks.
- Clarified project scope and initial setup instructions in "plan-de-desarrollo.md" and "puesta-en-marcha.md".
- Improved descriptions of workstation management in "puestos-de-trabajo.md" for better understanding of active/inactive states.
- Enhanced resource management details in "recursos-campos-y-plantillas.md" to clarify relationships and pending features.
- Revised best practices review in "revision-de-buenas-practicas.md" to reflect current project status and components.
- Updated teleworking documentation in "teletrabajo.md" to include references to remote technical assistance.
- Clarified user account management in "usuarios-y-acceso.md" to emphasize the importance of account deactivation.
2026-10-15 17:48:46 +02:00

46 KiB

Diagrama de entidad relación de la base de datos

Esquema derivado de la captura de MariaDB del 14 de octubre de 2026 mediante information_schema, depurado el 15 de octubre de 2026 según la migración activa removeArchivedSupportTables. Se excluyen las 19 tablas retiradas; sus fuentes y contratos se conservan en el archivo. No se ha realizado una nueva consulta a MariaDB ni ejecutado migraciones para esta revisión. Los demás metadatos conservan los tipos y restricciones de la captura original.

111 tablas y 2 vistas SQL · 860 columnas · 1008 restricciones FK · 309 relaciones distintas (agrupando restricciones con idénticas columnas, destino y reglas).

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
    person_department_assignments
    resource_definitions
    resources
    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{ 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"
    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
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"

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"

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"

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 113 objetos representados son 111 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.

La captura conservada contiene 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

La depuración documental se ha contrastado con la lista explícita de tablas de la migración activa. El diccionario y el diagrama completo coinciden en 111 tablas y 2 vistas SQL, 860 columnas y 309 relaciones distintas; todas las tablas se asignan a un área. Las reglas ON DELETE/ON UPDATE se recogen en el diccionario. Esta comprobación revisa los documentos y la migración, no certifica el estado de una base de datos en ejecución.