64 lines
3.1 KiB
SQL
64 lines
3.1 KiB
SQL
CREATE TABLE skills_edu.skill_details (
|
|
id uuid PRIMARY KEY REFERENCES public.skills(id) ON DELETE RESTRICT,
|
|
name_en varchar(255),
|
|
description_pt text,
|
|
description_en text,
|
|
category varchar(30) NOT NULL CHECK (category IN ('technical','transversal','digital','management','language','other')),
|
|
skill_type varchar(30) NOT NULL DEFAULT 'competency',
|
|
default_level varchar(30),
|
|
source_name varchar(255),
|
|
source_version varchar(100),
|
|
status varchar(20) NOT NULL DEFAULT 'active' CHECK (status IN ('draft','active','inactive','archived')),
|
|
created_by bigint,
|
|
updated_by bigint,
|
|
created_at timestamptz NOT NULL DEFAULT now(),
|
|
updated_at timestamptz NOT NULL DEFAULT now(),
|
|
deleted_at timestamptz
|
|
);
|
|
|
|
CREATE TABLE skills_edu.occupation_details (
|
|
id uuid PRIMARY KEY REFERENCES public.occupations(id) ON DELETE RESTRICT,
|
|
name_en varchar(255),
|
|
description_pt text,
|
|
description_en text,
|
|
occupational_family varchar(150),
|
|
sector_master_id bigint,
|
|
qualification_level varchar(80),
|
|
minimum_experience_months integer CHECK (minimum_experience_months IS NULL OR minimum_experience_months >= 0),
|
|
status varchar(20) NOT NULL DEFAULT 'active' CHECK (status IN ('draft','active','inactive','archived')),
|
|
created_by bigint,
|
|
updated_by bigint,
|
|
created_at timestamptz NOT NULL DEFAULT now(),
|
|
updated_at timestamptz NOT NULL DEFAULT now(),
|
|
deleted_at timestamptz
|
|
);
|
|
|
|
CREATE TABLE skills_edu.occupation_skills (
|
|
occupation_id uuid NOT NULL REFERENCES public.occupations(id) ON DELETE CASCADE,
|
|
skill_id uuid NOT NULL REFERENCES public.skills(id) ON DELETE RESTRICT,
|
|
requirement_type varchar(20) NOT NULL DEFAULT 'required' CHECK (requirement_type IN ('required','desired')),
|
|
minimum_level varchar(30),
|
|
weight numeric(5,2) CHECK (weight IS NULL OR weight BETWEEN 0 AND 100),
|
|
approved_at timestamptz,
|
|
approved_by bigint,
|
|
created_at timestamptz NOT NULL DEFAULT now(),
|
|
PRIMARY KEY (occupation_id, skill_id, requirement_type)
|
|
);
|
|
|
|
CREATE INDEX idx_skills_category_status ON skills_edu.skill_details(category,status) WHERE deleted_at IS NULL;
|
|
CREATE INDEX idx_occupations_sector_status ON skills_edu.occupation_details(sector_master_id,status) WHERE deleted_at IS NULL;
|
|
CREATE TRIGGER trg_skills_updated_at BEFORE UPDATE ON skills_edu.skill_details FOR EACH ROW EXECUTE FUNCTION skills_edu.set_updated_at();
|
|
CREATE TRIGGER trg_occupations_updated_at BEFORE UPDATE ON skills_edu.occupation_details FOR EACH ROW EXECUTE FUNCTION skills_edu.set_updated_at();
|
|
|
|
ALTER TABLE skills_edu.skill_details ADD FOREIGN KEY (created_by) REFERENCES public.users(id) ON DELETE RESTRICT;
|
|
|
|
ALTER TABLE skills_edu.skill_details ADD FOREIGN KEY (updated_by) REFERENCES public.users(id) ON DELETE RESTRICT;
|
|
|
|
ALTER TABLE skills_edu.occupation_details ADD FOREIGN KEY (created_by) REFERENCES public.users(id) ON DELETE RESTRICT;
|
|
|
|
ALTER TABLE skills_edu.occupation_details ADD FOREIGN KEY (updated_by) REFERENCES public.users(id) ON DELETE RESTRICT;
|
|
|
|
ALTER TABLE skills_edu.occupation_details ADD FOREIGN KEY (sector_master_id) REFERENCES public.sectors(id) ON DELETE RESTRICT;
|
|
|
|
ALTER TABLE skills_edu.occupation_skills ADD FOREIGN KEY (approved_by) REFERENCES public.users(id) ON DELETE RESTRICT;
|