ข้ามไปที่เนื้อหา

MASTER schema — ข้อมูลหลักใช้ร่วมทุกระบบ (Shared Master Data)

Schema กลางบน UAT .155 / PSDBDEVDB สำหรับ ข้อมูลอ้างอิง (lookup/master data) ที่ทุกระบบ S1–S9 ใช้ร่วมกัน — แทนการที่แต่ละระบบเก็บสำเนา lookup ของตัวเอง

อัปเดตล่าสุด: 2026-08-16 — เพิ่ม PoliceStations (คัดลอกจาก OCIPA)

ตารางในปัจจุบัน

ตาราง แถว ที่มา หมายเหตุ
Provinces 77 มาตรฐานรหัสจังหวัดไทย PK = code (เช่น 10 = กรุงเทพมหานคร)
PoliceStations 1,514 คัดลอกจาก OCIPA.PoliceStation (S6 legacy) เมื่อ 2026-08-16 ทุกแถว active; จังหวัดถูก re-map เป็นรหัสมาตรฐาน

MASTER.Provinces

Column Type Constraints คำอธิบาย
code nvarchar(4) PK รหัสจังหวัดมาตรฐาน (10 = กรุงเทพฯ, 11 = สมุทรปราการ, …)
name_th nvarchar(150) NOT NULL ชื่อจังหวัดภาษาไทย
name_en nvarchar(150) NULL ชื่อจังหวัดภาษาอังกฤษ
region_th nvarchar(50) NULL ภาค (ภาคกลาง / ภาคเหนือ / …)

MASTER.PoliceStations

สร้างเมื่อ 2026-08-16 โดยคัดลอกจาก OCIPA.PoliceStation (ในฐานเดียวกัน — UAT มี schema OCIPA ครบ 261 ตารางอยู่แล้ว จึงไม่ต้องแตะ production S6)

Column Type Constraints คำอธิบาย
id int PK = PoliceStationID เดิมของ OCIPA (คงไว้เพื่อ trace กลับข้อมูลคดีเดิม)
name_th nvarchar(250) NOT NULL ชื่อสถานีตำรวจ (เช่น สน.นางเลิ้ง, ส.รฟ.ธนบุรี)
station_code varchar(50) NULL รหัสอ้างอิงจากระบบ CRIME ของสำนักงานตำรวจแห่งชาติ (PoliceStationCode เดิม)
province_code nvarchar(4) FK → MASTER.Provinces.code รหัสจังหวัดมาตรฐาน (มี index)
address_th nvarchar(250) NULL ที่อยู่
is_active bit NOT NULL, DEFAULT 1 สถานะใช้งาน

สิ่งที่เปลี่ยนจากตารางต้นทาง (OCIPA)

  1. แก้ typo ชื่อคอลัมน์ — ต้นทางสะกด PoliceStationame (ตก N); ตารางกลางใช้ name_th ตาม convention ของ MASTER.Provinces
  2. Re-map จังหวัด — ต้นทางอ้าง ProvinceID ภายในของ OCIPA (1 = กรุงเทพฯ); ตารางกลาง map เป็น รหัสจังหวัดมาตรฐาน (10 = กรุงเทพฯ) ผ่านการ join ชื่อจังหวัดไทย — ตรวจแล้ว ครบ 77/77 จังหวัด, ไม่มีแถวที่ map ไม่ได้
  3. Collation — คอลัมน์ใหม่ใช้ database default (SQL_Latin1_General_CP1_CI_AS) ให้ตรงกับ MASTER.Provinces (schema OCIPA เดิมเป็น Thai_CI_AS); ข้อความไทยไม่กระทบเพราะเป็น nvarchar (Unicode)

การตรวจสอบหลัง migrate (2026-08-16)

  • รวม 1,514 แถว = ต้นทางครบ, province_code ไม่มี NULL, active ทั้งหมด
  • กระจายตามจังหวัดสมเหตุสมผล: กรุงเทพฯ 107, นครราชสีมา 52, เชียงใหม่ 38, อุบลฯ 37, บุรีรัมย์ 34

Migration script

Idempotent (รันซ้ำได้ — insert เฉพาะ id ที่ยังไม่มี): master_police_stations.sql

วิธีรันบน UAT (read path เดียวกับการ probe schema — ดู UAT DB Schema Status): VPN → SSH .155docker exec -i rlpd-mssql sqlcmd … -d PSDBDEVDB -i /dev/stdin < master_police_stations.sql

แนวทางใช้งานสำหรับแต่ละระบบ

  • อ่านตรงจาก MASTER.PoliceStations (ฐานเดียวกันทุกระบบบน .155) — filter is_active = 1, กรองตามจังหวัดด้วย province_code
  • อย่า สร้างสำเนา police station ใหม่ใน schema ของตัวเอง — ถ้าต้องการคอลัมน์เพิ่ม ให้เสนอเพิ่มที่ตารางกลางนี้
  • ระบบที่ join กลับข้อมูลคดี OCIPA เดิม: MASTER.PoliceStations.id = OCIPA.PoliceStation.PoliceStationID
  • ที่ production cutover: รัน script เดิมซ้ำบนฐาน production ได้ทันที (idempotent)