party_relation

Column Type PK Required Default
party_relation_id VARCHAR Yes Yes
party_id VARCHAR No Yes
related_party_id VARCHAR No Yes
relation_type_id ULID No Yes
elaboration TEXT No No
created_at TIMESTAMPTZ No No CURRENT_TIMESTAMP
created_by TEXT No No 'UNKNOWN'
updated_at TIMESTAMPTZ No No
updated_by TEXT No No
deleted_at TIMESTAMPTZ No No
deleted_by TEXT No No
activity_log TEXT No No

Foreign Keys

Column Name Foreign Key
relation_type_id relation_type_id references party_relation_type.party_relation_type_id
related_party_id related_party_id references party.party_id
party_id party_id references party.party_id

Indexes

Column Name Index Name
party_id idx_party_relation__party_id__related_party_id__relation_type_id
related_party_id idx_party_relation__party_id__related_party_id__relation_type_id
relation_type_id idx_party_relation__party_id__related_party_id__relation_type_id
party_id sqlite_autoindex_party_relation_2
related_party_id sqlite_autoindex_party_relation_2
relation_type_id sqlite_autoindex_party_relation_2
party_relation_id sqlite_autoindex_party_relation_1

SQL DDL

CREATE TABLE "party_relation" (
    "party_relation_id" VARCHAR PRIMARY KEY NOT NULL,
    "party_id" VARCHAR NOT NULL,
    "related_party_id" VARCHAR NOT NULL,
    "relation_type_id" ULID NOT NULL,
    "elaboration" TEXT CHECK(json_valid(elaboration) OR elaboration IS NULL),
    "created_at" TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
    "created_by" TEXT DEFAULT 'UNKNOWN',
    "updated_at" TIMESTAMPTZ,
    "updated_by" TEXT,
    "deleted_at" TIMESTAMPTZ,
    "deleted_by" TEXT,
    "activity_log" TEXT,
    FOREIGN KEY("party_id") REFERENCES "party"("party_id"),
    FOREIGN KEY("related_party_id") REFERENCES "party"("party_id"),
    FOREIGN KEY("relation_type_id") REFERENCES "party_relation_type"("party_relation_type_id"),
    UNIQUE("party_id", "related_party_id", "relation_type_id")
)