Skip to content

Latest commit

 

History

History
91 lines (74 loc) · 2.4 KB

20240212000000_schema_erd.md

File metadata and controls

91 lines (74 loc) · 2.4 KB

Diagram for 20240118000000_create_new_tables.sql

---
title: Database Schema Mermaid Diagram
nodes: |
  Metadata is a jsonb type which will hold a common structure

  To note OCI data we can utilize labels (i.e. map[string]string)
    "labels": {
      "oci:version": "1.0.0"
      "oci:...": "..."
    }

---

erDiagram

    Namespace ||--|{ AttributeDefinition : has
    AttributeDefinition ||--|{ AttributeValue : has
    AttributeDefinition ||--o{ AttributeDefinitionKeyAccessGrant : has

    AttributeValue ||--o{ AttributeValueKeyAccessGrant: has
    AttributeValue ||--o{ AttributeValue: "has group members"

    AttributeDefinitionKeyAccessGrant ||--|{ KeyAccessServer: has
    AttributeValueKeyAccessGrant ||--|{ KeyAccessServer: has

    ResourceMapping }o--o{ AttributeValue: relates

    SubjectMapping }o--o{ AttributeValue: relates

    Namespace {
        uuid        id   PK
        varchar     name UK
        bool        active
    }

    AttributeDefinition {
        uuid         id           PK
        uuid         namespace_id FK
        varchar      name
        enum         rule
        jsonb        metadata
        compIdx      comp_key     UK "ns_id + name"
        bool         active
    }

    AttributeDefinitionKeyAccessGrant {
        uuid  attribute_definition_id FK
        uuid  key_access_server_id    FK
    }

    AttributeValue {
        uuid         id                      PK
        uuid         attribute_definition_id FK
        varchar      value
        uuid[]       members                 FK "Optional grouping of values"
        jsonb        metadata
        compIdx      comp_key                UK "ns_id + ad_id + value"
        bool         active
    }

    AttributeValueKeyAccessGrant {
        uuid  attribute_value_id FK
        uuid  key_access_server_id FK
    }

    ResourceMapping {
        uuid         id                 PK
        uuid         attribute_value_id FK
        varchar[]    terms
        jsonb        metadata
    }

    SubjectMapping {
        uuid           id                          PK
        uuid           attribute_value_id
        enum           operator
        varchar        subject_attribute
        varchar[]      subject_attribute_values
        jsonb          metadata
    }

    KeyAccessServer {
        uuid       id                PK
        varchar    uri               UK
        jsonb      public_key
        jsonb      metadata
    }