Skip to content

Timestamp Bound Access ERD

Entity relations for Timestamp Bound Access configuration. Technical basis for feature development.

---
title: Access Rules- and Data Versioning Diagram
---

erDiagram

%% %%MINIMAL TAG exports minimalised version of graph (for overview purposes)
%% Minimalise using script: %CORE%/scripts/docs_subset_filter.sh -O export/timestamp_bound_access-erd-minimal_export.md timestamp_bound_access-erd.md  %%MINIMAL

%%MINIMAL

  "Local Pseudonym" {
    string pseudonym UK "Cryptographically calculated data subject identifier for a User Group"
    string briefLocalPseudonym UK "A capped version of the local pseudonym"
  }

  "Local Pseudonym" }o--o{ "User Group": "defined by Pseudonimisation Domain"
%%MINIMAL
  "User Group" { 
    string identifier PK "e.g. `CogPDim-uploader`"
    string pseudonymisationDomain "e.g. `CogPDim`"
%%MINIMAL
    string accessVersion FK
%%MINIMAL
  }

  %% ACCESS RULE CGAR
  "User Group" ||--o{ "Column Group Access Rule": "Column Group access granted by"
%%MINIMAL
  "Column Group Access Rule" }o..o{ "Access Version": "use CGAR's up to arSnapTime"
%%MINIMAL
  "Column Group Access Rule" {
    string userGroup FK
    ColumnGroup CG
    ColumnAccess CA "{read, read-meta, write, write-meta}"
    Timestamp   mutationTS
%%MINIMAL
  }

%%MINIMAL
  "User Group" }o--|| "Access Version": "has access to this data version"
%%MINIMAL
  "Access Version" {
    string identifier PK "e.g. 'V2024-1'"
%%MINIMAL
    Timestamp arSnapTime "e.g. 2024-01-27(T00:00:00)" 
%%MINIMAL
    string dataVersion FK "Refer to by identifier (e.g. 'D2024-1')"
    string comments "Updated after data subject revoked consent"
%%MINIMAL
  }


  %% ACCESS RULE PGAR
  "User Group" ||--o{ "Data Subject Group Access Rule": "Data Subject Group access granted by"
%%MINIMAL
  "Data Subject Group Access Rule" }o..o{ "Access Version": "use PGAR's up to arSnapTime"
%%MINIMAL
  "Data Subject Group Access Rule" {
    string userGroup FK
    DataSubjectGroup SG
    DataSubjectGroupAccess SGA "{access}"
    Timestamp   mutationTS
%%MINIMAL
  }

  "Column Group Access Rule" }o..|| "Column Group": "concerns"
   "Column Group" {
    string identifier
    Column[] columns
    Timestamp mutationTS
   }

  "Column Group" }o--o{ Column: "collection of"
  Column {
     string identifier
  }
  Column }o..o{ "Cell Data": "organises"

%%MINIMAL
  "Access Version" }o--|| "Data Version": "repository data pinpointed at"
%%MINIMAL
  "Data Version" {
    string identifier PK "e.g. 'D2024-1'"
%%MINIMAL
    Timestamp dataSnapTime "e.g. 2024-01-27(T00:00:00)" 
    string comments "e.g. 'First 2024 release. Only minor modifications since R2023-7'"
%%MINIMAL
  }

%%MINIMAL
  "Data Version" }o--o{ "Cell Data": "use data at dataSnapTime"

%%MINIMAL
  "Cell Data"  {
    blob data
    string column
    string dataSubject
%%MINIMAL
  }

  "Data Subject Group Access Rule" }o..|| "Data Subject Group": "concerns"
  "Data Subject Group" {
    string identifier
    DataSubject[] dataSubjects
    Timestamp mutationTS
  }

  "Data Subject Group" }o--o{ "Data Subject": "collection of"
  "Data Subject" {
     string identifier
  }
  "Data Subject" }o..o{ "Cell Data": "organises"