Data Structures
Last modified by Kerem Yollu on 2025/03/23 11:28
Data Structures for KPM and database relations
Core Entity Tables
Address
Address table is made so that i can be populated from external source like open address,
It will be then used from Companies, Users and Persons tables
Lookup Tables without references.
Company
- company_legal_form
- company_relation
- company_status
- company_types
Project
- project_areas
- project_type
- project_company_role
- projects_person_role
Task
- task_category
- task_type
- task_status
User
- user_role
- user_type
Employee
- employee_role
- employee_status
- employee_departement (this one i am not shure, maybe departments should be in company ?)
DO $$
DECLARE
tname TEXT;
BEGIN
FOREACH tname IN ARRAY ARRAY'TBALE_ONE','TABLE_TWO']
LOOP
EXECUTE format('
CREATE TABLE IF NOT EXISTS public.%I (
uid SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL,
description VARCHAR(255),
creation_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
ALTER TABLE public.%I OWNER TO kpm_rw;
', tname, tname);
END LOOP;
END$$;
DECLARE
tname TEXT;
BEGIN
FOREACH tname IN ARRAY ARRAY'TBALE_ONE','TABLE_TWO']
LOOP
EXECUTE format('
CREATE TABLE IF NOT EXISTS public.%I (
uid SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL,
description VARCHAR(255),
creation_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
ALTER TABLE public.%I OWNER TO kpm_rw;
', tname, tname);
END LOOP;
END$$;
Lookup Tables with references.
Company
- company_departements
CREATE TABLE IF NOT EXISTS public.TABLE
(
uid SERIAL PRIMARY KEY,
OTHER_TABLE_uid INTEGER NOT NULL REFERENCES public.OTHER_TABLE(uid) ON DELETE CASCADE,
name VARCHAR(100) NOT NULL,
description VARCHAR(255),
creation_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)
TABLESPACE pg_default;
ALTER TABLE IF EXISTS public.TABLE
OWNER TO kpm_rw;
(
uid SERIAL PRIMARY KEY,
OTHER_TABLE_uid INTEGER NOT NULL REFERENCES public.OTHER_TABLE(uid) ON DELETE CASCADE,
name VARCHAR(100) NOT NULL,
description VARCHAR(255),
creation_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)
TABLESPACE pg_default;
ALTER TABLE IF EXISTS public.TABLE
OWNER TO kpm_rw;