Skip to main content

นิยาม Attribute และตัวแปรระบบ

ภาพรวม

Domain นี้มี 2 ตาราง คือ attribute_master ซึ่งเก็บ "นิยาม" (schema) ของ custom attribute ที่แต่ละ LINE OA กำหนดไว้ใช้กับ LINE user และ system_attribute ซึ่งเก็บตัวแปรระบบแบบ key-value ระดับ OA/องค์กร (เช่นค่าคงที่หรือ config ที่นำไปใช้ใน merge tag หรือเงื่อนไขต่างๆ) ทั้งสองตารางแยกข้อมูลตาม line_oa_id + organization_id และใช้ soft delete ผ่าน deleted_date

ตาราง attribute_master

ColumnTypeNullableDefaultคำอธิบาย
idSERIAL (INTEGER)NOnextval(...)รหัสอ้างอิงหลักของชุดนิยาม attribute
line_oa_idINTEGERNO-รหัส LINE OA เจ้าของชุดนิยามนี้ (FK ไป line_oa.id)
organization_idINTEGERNO-รหัสองค์กรเจ้าของข้อมูล
nameVARCHAR(255)NO-ชื่อชุดนิยาม attribute
descriptionTEXTYES-คำอธิบายเพิ่มเติมของชุดนิยาม
schemaJSONBNO{"version": "1.0", "attributes": []}โครงสร้างนิยาม attribute ทั้งหมด (เวอร์ชัน + รายการ attribute พร้อม type และตัวเลือก)
statusVARCHAR(20)NO'active'สถานะการใช้งานของชุดนิยาม
created_byINTEGERYES-รหัสผู้ใช้ที่สร้างรายการ
updated_byINTEGERYES-รหัสผู้ใช้ที่แก้ไขล่าสุด
created_dateTIMESTAMPTZ(3)NOnow()วันเวลาที่สร้างรายการ
updated_dateTIMESTAMPTZ(3)YES-วันเวลาที่แก้ไขล่าสุด
deleted_dateTIMESTAMPTZ(3)YES-วันเวลาที่ลบแบบ soft delete (NULL = ยังไม่ถูกลบ)

ตาราง system_attribute

ColumnTypeNullableDefaultคำอธิบาย
idSERIAL (INTEGER)NOnextval(...)รหัสอ้างอิงหลักของตัวแปรระบบ
line_oa_idINTEGERNO-รหัส LINE OA ที่ตัวแปรนี้สังกัด
organization_idINTEGERNO-รหัสองค์กรเจ้าของข้อมูล
keyVARCHAR(255)NO-ชื่อคีย์ของตัวแปรระบบ (unique ต่อ OA + องค์กร)
valueTEXTNO''ค่าของตัวแปร เก็บเป็นข้อความเสมอ แล้วตีความตาม data_type
data_typeVARCHAR(20)NO'string'ชนิดข้อมูลของค่าที่เก็บ เช่น string, number, boolean
expires_atTIMESTAMPTZYES-วันเวลาหมดอายุของค่า (NULL = ไม่หมดอายุ)
descriptionVARCHAR(500)YES-คำอธิบายว่าตัวแปรนี้ใช้ทำอะไร
created_byINTEGERYES-รหัสผู้ใช้ที่สร้างรายการ
updated_byINTEGERYES-รหัสผู้ใช้ที่แก้ไขล่าสุด
created_dateTIMESTAMP(3)YESnow()วันเวลาที่สร้างรายการ
updated_dateTIMESTAMP(3)YESnow()วันเวลาที่แก้ไขล่าสุด
deleted_dateTIMESTAMP(3)YES-วันเวลาที่ลบแบบ soft delete

หมายเหตุ

  • attribute_master.line_oa_id เป็น FK ไปยัง line_oa.id แบบ ON DELETE CASCADE — เมื่อลบ LINE OA ชุดนิยาม attribute จะถูกลบตาม
  • attribute_master มี unique constraint บน (line_oa_id, organization_id, name) จึงตั้งชื่อ ชุดนิยามซ้ำภายใน OA + องค์กรเดียวกันไม่ได้
  • system_attribute มี unique constraint uq_system_attribute_oa_org_key บน (line_oa_id, organization_id, key) และ index idx_system_attr_oa บน (line_oa_id, organization_id)
  • คอลัมน์วันเวลาของ system_attribute ไม่ได้ระบุ timezone ใน schema จึงเป็น TIMESTAMP(3) ต่างจาก attribute_master ที่เป็น TIMESTAMPTZ(3)