126 lines
5.3 KiB
Plaintext
126 lines
5.3 KiB
Plaintext
|
|
-- ตาราง Organization Groups (ฝ่ายงาน)
|
||
|
|
CREATE TABLE orgmst (
|
||
|
|
orgseq INT AUTO_INCREMENT PRIMARY KEY,
|
||
|
|
orgcod VARCHAR(20) NOT NULL UNIQUE,
|
||
|
|
orgnam VARCHAR(255) NOT NULL -- name_th
|
||
|
|
);
|
||
|
|
|
||
|
|
-- ตาราง Vocational Categories (ประเภทวิชา)
|
||
|
|
CREATE TABLE catmst (
|
||
|
|
catseq INT AUTO_INCREMENT PRIMARY KEY,
|
||
|
|
catcod VARCHAR(10) NOT NULL UNIQUE,
|
||
|
|
catnam VARCHAR(255) NOT NULL -- name_th
|
||
|
|
);
|
||
|
|
|
||
|
|
|
||
|
|
------------------------------------------------------------------------------
|
||
|
|
--ตาราง Users
|
||
|
|
|
||
|
|
CREATE TABLE usrmst (
|
||
|
|
usrseq BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, -- id
|
||
|
|
usreml VARCHAR(255) NOT NULL UNIQUE, -- email
|
||
|
|
usrpwd VARCHAR(255) NOT NULL, -- password_hash
|
||
|
|
usrnam VARCHAR(255) NOT NULL, -- name_th
|
||
|
|
usrrol ENUM('admin','evaluator','evaluatee') NOT NULL, -- role
|
||
|
|
depseq INT NULL, -- department_id (Link to depmst)
|
||
|
|
usrdtm TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -- created_at
|
||
|
|
usrupd TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP -- updated_at (แถมให้)
|
||
|
|
);
|
||
|
|
|
||
|
|
----------------------------------------------------------------------------------
|
||
|
|
|
||
|
|
-- เก็บข้อมูลแผนกวิชา
|
||
|
|
|
||
|
|
CREATE TABLE depmst (
|
||
|
|
depseq INT AUTO_INCREMENT PRIMARY KEY,
|
||
|
|
depcod VARCHAR(20) NOT NULL UNIQUE, -- code
|
||
|
|
depnam VARCHAR(255) NOT NULL, -- name_th
|
||
|
|
catseq INT NOT NULL, -- category_id (ถ้ามีตาราง catmst)
|
||
|
|
orgseq INT NOT NULL -- org_group_id (ถ้ามีตาราง orgmst)
|
||
|
|
);
|
||
|
|
|
||
|
|
--------------------------------------------------------------------------
|
||
|
|
-- เก็บหัวข้อใหญ่ของการประเมิน (เช่น ด้านการสอน)
|
||
|
|
|
||
|
|
CREATE TABLE topmst (
|
||
|
|
topseq BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
||
|
|
topcod VARCHAR(30) NOT NULL UNIQUE, -- code
|
||
|
|
toptit VARCHAR(255) NOT NULL, -- title_th
|
||
|
|
topdes TEXT NULL, -- description
|
||
|
|
topwgt DECIMAL(5,2) DEFAULT 0.00, -- weight
|
||
|
|
topact TINYINT(1) DEFAULT 1, -- active
|
||
|
|
topdtm TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||
|
|
);
|
||
|
|
|
||
|
|
---------------------------------------------------------------------------
|
||
|
|
--ตาราง Indicators
|
||
|
|
|
||
|
|
CREATE TABLE indmst (
|
||
|
|
indseq BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
||
|
|
topseq BIGINT UNSIGNED NOT NULL, -- topic_id (Link to topmst)
|
||
|
|
indcod VARCHAR(40) NOT NULL UNIQUE, -- code (รหัสตัวชี้วัด)
|
||
|
|
indnam VARCHAR(255) NOT NULL, -- name_th
|
||
|
|
indwgt DECIMAL(5,2) DEFAULT 1.00, -- weight
|
||
|
|
indmax TINYINT DEFAULT 4, -- max_score
|
||
|
|
indact TINYINT(1) DEFAULT 1, -- active
|
||
|
|
|
||
|
|
-- Foreign Key
|
||
|
|
CONSTRAINT fk_ind_top FOREIGN KEY (topseq) REFERENCES topmst(topseq)
|
||
|
|
);
|
||
|
|
|
||
|
|
------------------------------------------------------------------------
|
||
|
|
-- เก็บผลการประเมิน
|
||
|
|
|
||
|
|
CREATE TABLE evltrn (
|
||
|
|
evlseq BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
||
|
|
perseq BIGINT UNSIGNED NOT NULL, -- period_id (รอบการประเมิน)
|
||
|
|
evrseq BIGINT UNSIGNED NOT NULL, -- evaluator_id (กรรมการ)
|
||
|
|
eveseq BIGINT UNSIGNED NOT NULL, -- evaluatee_id (ผู้ถูกประเมิน)
|
||
|
|
indseq BIGINT UNSIGNED NOT NULL, -- indicator_id (ข้อที่ประเมิน)
|
||
|
|
evlscr DECIMAL(5,2) NULL, -- score
|
||
|
|
evlnote TEXT NULL, -- notes
|
||
|
|
evlsta ENUM('draft','submitted') DEFAULT 'draft', -- status
|
||
|
|
evldtm TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||
|
|
|
||
|
|
-- Unique Key: ห้ามประเมินซ้ำคนเดิม รอบเดิม ข้อเดิม
|
||
|
|
UNIQUE KEY unq_evl (perseq, evrseq, eveseq, indseq)
|
||
|
|
);
|
||
|
|
|
||
|
|
----------------------------------------------------------------------
|
||
|
|
|
||
|
|
-- เก็บรอบการประเมิน (เช่น ปีการศึกษา 2568)
|
||
|
|
CREATE TABLE permst (
|
||
|
|
perseq BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
||
|
|
percod VARCHAR(30) NOT NULL UNIQUE, -- code (Y2568)
|
||
|
|
pernam VARCHAR(255) NOT NULL, -- name_th
|
||
|
|
peryear INT NOT NULL, -- buddhist_year
|
||
|
|
persdt DATE NOT NULL, -- start_date
|
||
|
|
peredt DATE NOT NULL, -- end_date
|
||
|
|
peract TINYINT(1) DEFAULT 1, -- is_active
|
||
|
|
perdtm TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||
|
|
);
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
-------------------------------------------------------------------
|
||
|
|
|
||
|
|
-- ตารางจับคู่ "ใครประเมินใคร"
|
||
|
|
|
||
|
|
CREATE TABLE asgtrn (
|
||
|
|
asgseq BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
||
|
|
perseq BIGINT UNSIGNED NOT NULL, -- period_id
|
||
|
|
evrseq BIGINT UNSIGNED NOT NULL, -- evaluator_id (Link to usrmst)
|
||
|
|
eveseq BIGINT UNSIGNED NOT NULL, -- evaluatee_id (Link to usrmst)
|
||
|
|
depseq INT NULL, -- dept_id
|
||
|
|
asgdtm TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||
|
|
|
||
|
|
-- Foreign Keys
|
||
|
|
CONSTRAINT fk_asg_per FOREIGN KEY (perseq) REFERENCES permst(perseq),
|
||
|
|
CONSTRAINT fk_asg_evr FOREIGN KEY (evrseq) REFERENCES usrmst(usrseq),
|
||
|
|
CONSTRAINT fk_asg_eve FOREIGN KEY (eveseq) REFERENCES usrmst(usrseq),
|
||
|
|
|
||
|
|
-- ห้ามจับคู่ซ้ำในรอบเดิม
|
||
|
|
UNIQUE KEY unq_asg (perseq, evrseq, eveseq)
|
||
|
|
);
|
||
|
|
|
||
|
|
---------------------------------------------------------------------
|