ABIMS.

Data

พจนานุกรมข้อมูล

พจนานุกรมข้อมูลบทที่ 3 — ฐาน abims · 11 ตาราง · 94 ฟิลด์ · กด「คัดลอกตาราง」แล้ววางใน Word ได้ทันที (TH SarabunPSK 16pt) · โครงสร้างละเอียดอยู่ใน 04-database.md

บทที่ 3

พจนานุกรมข้อมูล (Data Dictionary)

ผู้จัดทำได้ทำการศึกษาข้อมูลต่าง ๆ ที่เกี่ยวข้องกับระบบจองห้องประชุมและยืมอุปกรณ์ ABIMS พร้อมกำหนดโครงสร้างตารางข้อมูลไว้ในพจนานุกรมข้อมูล ซึ่งมีทั้งหมด 11 ตาราง 94 ฟิลด์ จัดกลุ่มตามแฟ้มข้อมูล D1 - D7 ในแผนภาพกระแสข้อมูล โดยมีรายละเอียดดังนี้

D1 แฟ้มข้อมูลผู้ใช้

ตารางที่ 3.1 ตารางบัญชีผู้ใช้ (tbl_users)

ใช้เก็บบัญชีผู้ใช้ทุกบทบาท (Admin, Manager, Employee) รวมข้อมูลส่วนตัว รหัสผ่าน และ OTP สำหรับลืมรหัสผ่าน

ลำดับชื่อฟิลด์ประเภทข้อมูลคีย์Nullคำอธิบาย
1user_idVARCHAR(12)PKNOรหัสผู้ใช้ไม่ซ้ำ
2usernameVARCHAR(50)UKNOชื่อล็อกอิน
3full_nameVARCHAR(150)-YESชื่อ-นามสกุล
4genderVARCHAR(22)-NOเพศ
5prefixVARCHAR(22)-NOคำนำหน้า
6emailVARCHAR(150)-YESอีเมล
7phoneVARCHAR(20)-YESเบอร์โทร
8birth_dateDATE-YESวันเกิด
9profile_imageVARCHAR(255)-YESpath/URL รูปโปรไฟล์
10passwordVARCHAR(255)-NOรหัสผ่าน bcrypt
11reset_otp_hashVARCHAR(64)-YESแฮช OTP ลืมรหัส (NULL = ไม่มีคำขอ)
12reset_otp_expires_atDATETIME-YESหมดอายุ OTP
13reset_otp_attemptsINT(11)-NOครั้งใส่ OTP ผิด (ค่าเริ่มต้น 0)
14statusTINYINT(1)-YES1 ใช้งาน, 0 ปิด (ค่าเริ่มต้น 1)
15created_atDATETIME-YESวันที่สร้าง (ค่าเริ่มต้น เวลาปัจจุบัน)
16updated_atDATETIME-YESอัปเดตล่าสุด (ค่าเริ่มต้น เวลาปัจจุบัน)
17roleTINYINT(1)-YES1 Admin, 2 Manager, 3 Employee (ค่าเริ่มต้น 2)

D2 แฟ้มข้อมูลอุปกรณ์

ตารางที่ 3.2 ตารางหมวดหมู่อุปกรณ์ (tbl_categories)

ใช้เก็บหมวดหมู่ของอุปกรณ์ เพื่อจัดกลุ่มอุปกรณ์ในคลัง

ลำดับชื่อฟิลด์ประเภทข้อมูลคีย์Nullคำอธิบาย
1idINT(11)PKNOรหัสหมวด
2category_nameVARCHAR(100)-NOชื่อหมวด
3iconVARCHAR(50)-YESไอคอน Material (ค่าเริ่มต้น bookmark)
4created_atTIMESTAMP-NOวันที่สร้าง (ค่าเริ่มต้น เวลาปัจจุบัน)

ตารางที่ 3.3 ตารางรายการอุปกรณ์ (tbl_equipments)

ใช้เก็บรายการอุปกรณ์ จำนวนทั้งหมด จำนวนที่ยืมได้ และเงื่อนไขการยืม

ลำดับชื่อฟิลด์ประเภทข้อมูลคีย์Nullคำอธิบาย
1idINT(11)PKNOรหัสอุปกรณ์
2category_idINT(11)FKNOอ้างอิง tbl_categories.id
3equipment_nameVARCHAR(255)-NOชื่ออุปกรณ์
4image_pathVARCHAR(255)-YESรูป
5total_quantityINT(11)-NOจำนวนทั้งหมด (ค่าเริ่มต้น 1)
6available_quantityINT(11)-NOจำนวนที่ยืมได้ (ค่าเริ่มต้น 1)
7commentTEXT-YESหมายเหตุ
8statusTINYINT(1)-YES1 พร้อมใช้งาน, 3 ไม่พร้อมใช้งาน, 4 ซ่อมบำรุง (ค่าเริ่มต้น 1)
9max_borrow_durationINT(11)-NOยืมได้สูงสุด (วัน) (ค่าเริ่มต้น 1)
10max_per_requestINT(11)-NOยืมต่อคำขอสูงสุด (ค่าเริ่มต้น 1)
11created_atTIMESTAMP-NOวันที่เพิ่ม (ค่าเริ่มต้น เวลาปัจจุบัน)

D3 แฟ้มข้อมูลการยืมอุปกรณ์

ตารางที่ 3.4 ตารางหัวคำขอยืมอุปกรณ์ (tbl_bookings)

ใช้เก็บหัวคำขอยืมอุปกรณ์ หนึ่งแถวคือหนึ่งคำขอ พร้อมสถานะ ผู้อนุมัติ และหลักฐานการคืน

ลำดับชื่อฟิลด์ประเภทข้อมูลคีย์Nullคำอธิบาย
1idINT(11)PKNOรหัสคำขอ
2user_idVARCHAR(12)FKNOอ้างอิง tbl_users (ผู้ยืม)
3statusTINYINT(1)-YES1 รออนุมัติ, 2 กำลังยืม, 3 ปฏิเสธ, 4 คืนแล้ว, 5 ผู้ขอยกเลิก (ค่าเริ่มต้น 1)
4approved_byVARCHAR(12)FKYESอ้างอิง tbl_users (ผู้ดำเนินการล่าสุด)
5admin_mgr_notify_unreadTINYINT(1)-NOแจ้งเตือน Admin ยังไม่เคลียร์ (ค่าเริ่มต้น 0)
6reject_reasonTEXT-YESเหตุผลปฏิเสธ
7borrow_dateTIMESTAMP-NOวันส่งคำขอ (ค่าเริ่มต้น เวลาปัจจุบัน)
8return_dateTIMESTAMP-YESกำหนดคืน (สถานะ 1–2), เวลาคืนจริง (สถานะ 4)
9return_evidenceTEXT-YESรูปหลักฐานตอนรับคืน 1–5 รูป, เก็บเป็น JSON list ของ path เช่น ["uploads/returns/a.jpg"], ข้อมูลเก่าอาจเป็น path เดียว

ตารางที่ 3.5 ตารางรายการในคำขอยืม (tbl_booking_details)

ใช้เก็บรายการอุปกรณ์และจำนวนในแต่ละคำขอยืม

ลำดับชื่อฟิลด์ประเภทข้อมูลคีย์Nullคำอธิบาย
1idINT(11)PKNOรหัสบรรทัด
2booking_idINT(11)FKNOอ้างอิง tbl_bookings.id
3equipment_idINT(11)FKNOอ้างอิง tbl_equipments.id
4quantityINT(11)-NOจำนวน (ค่าเริ่มต้น 1)

D4 แฟ้มข้อมูลห้องประชุม

ตารางที่ 3.6 ตารางห้องประชุม (tbl_rooms)

ใช้เก็บข้อมูลห้องประชุม ความจุ สิทธิ์การจอง และการตั้งค่าว่าต้องรออนุมัติหรือไม่

ลำดับชื่อฟิลด์ประเภทข้อมูลคีย์Nullคำอธิบาย
1idINT(11)PKNOรหัสห้อง
2room_nameVARCHAR(150)-NOชื่อห้อง
3descriptionTEXT-YESรายละเอียด
4capacityINT(11)-NOความจุ (คน) (ค่าเริ่มต้น 0)
5allowed_rolesVARCHAR(50)-YESบทบาทที่จองได้ (รหัส role คั่นด้วยจุลภาค) (ค่าเริ่มต้น 1,2,3)
6image_pathVARCHAR(255)-YESรูปห้อง
7color_tagVARCHAR(20)-YESสีปฏิทิน (ค่าเริ่มต้น #3788d8)
8statusTINYINT(1)-YES1 เปิด, 0 ปิดปรับปรุง (ค่าเริ่มต้น 1)
9requires_booking_approvalTINYINT(1)-NO1 = รออนุมัติก่อนใช้ (ค่าเริ่มต้น 0)
10created_atTIMESTAMP-NOวันที่สร้าง (ค่าเริ่มต้น เวลาปัจจุบัน)
11access_roleTINYINT(1)-NOระดับสิทธิ์ 1 Admin, 2 Manager, 3 ทุกบทบาท (ระบบปัจจุบันตรวจสิทธิ์จาก allowed_roles) (ค่าเริ่มต้น 3)

D5 แฟ้มข้อมูลการจองห้อง

ตารางที่ 3.7 ตารางการจองห้อง (tbl_room_bookings)

ใช้เก็บการจองห้องประชุม ช่วงเวลา จำนวนผู้เข้าร่วม และสถานะการอนุมัติ

ลำดับชื่อฟิลด์ประเภทข้อมูลคีย์Nullคำอธิบาย
1idINT(11)PKNOรหัสการจอง
2user_idVARCHAR(12)FKNOอ้างอิง tbl_users
3room_idINT(11)FKNOอ้างอิง tbl_rooms.id
4titleVARCHAR(255)-NOหัวข้อการประชุม
5attendeesINT(11)-NOจำนวนผู้เข้าร่วม (ค่าเริ่มต้น 1)
6color_tagVARCHAR(7)-YESสี event
7start_datetimeDATETIME-NOเริ่ม
8end_datetimeDATETIME-NOสิ้นสุด
9statusTINYINT(1)-YES1 รออนุมัติ, 2 อนุมัติ, 3 ปฏิเสธ, 4 ยกเลิก (ค่าเริ่มต้น 1)
10approved_byVARCHAR(12)FKYESอ้างอิง tbl_users
11reject_reasonTEXT-YESเหตุผลปฏิเสธ
12created_atTIMESTAMP-NOวันที่สร้าง (ค่าเริ่มต้น เวลาปัจจุบัน)

D6 แฟ้มข้อมูลปฏิทินและเวลาทำการ

ตารางที่ 3.8 ตารางบล็อกเวลา / วันหยุด (tbl_calendar_blocks)

ใช้เก็บช่วงเวลาที่ปิดการจอง เช่น วันหยุดบริษัทหรือปิดห้องชั่วคราว

ลำดับชื่อฟิลด์ประเภทข้อมูลคีย์Nullคำอธิบาย
1idINT(11)PKNOรหัสบล็อก
2room_idINT(11)FKYESอ้างอิง tbl_rooms (NULL = ทั้งบริษัท)
3title_reasonVARCHAR(255)-NOเหตุผลแสดงในปฏิทิน
4block_typeTINYINT(1)-NO1 วันหยุดบริษัท, 2 ปิดห้อง (ค่าเริ่มต้น 2)
5color_tagVARCHAR(7)-YESสี
6start_datetimeDATETIME-NOเริ่ม
7end_datetimeDATETIME-NOสิ้นสุด
8created_byVARCHAR(12)FKNOอ้างอิง tbl_users.user_id (Admin ที่สร้าง)
9created_atTIMESTAMP-NOวันที่สร้าง (ค่าเริ่มต้น เวลาปัจจุบัน)

ตารางที่ 3.9 ตารางชุดเวลาทำการ (tbl_time_presets)

ใช้เก็บชุดเวลาทำการ ระบบใช้ชุดที่เปิดใช้งานตรวจสอบเวลาจองห้อง

ลำดับชื่อฟิลด์ประเภทข้อมูลคีย์Nullคำอธิบาย
1idINT(11)PKNOรหัสชุด
2preset_nameVARCHAR(100)-NOชื่อชุด
3is_activeTINYINT(1)-YES1 = ใช้ตรวจการจองอยู่ (ค่าเริ่มต้น 0)
4created_atTIMESTAMP-NOวันที่สร้าง (ค่าเริ่มต้น เวลาปัจจุบัน)

ตารางที่ 3.10 ตารางเวลาเปิด-ปิดรายวัน (tbl_time_preset_days)

ใช้เก็บเวลาเปิด-ปิดของแต่ละวันในสัปดาห์ของชุดเวลาทำการ

ลำดับชื่อฟิลด์ประเภทข้อมูลคีย์Nullคำอธิบาย
1idINT(11)PKNOรหัสบรรทัด
2preset_idINT(11)FKNOอ้างอิง tbl_time_presets.id
3day_of_weekTINYINT(1)-NO0 อาทิตย์ … 6 เสาร์
4is_openTINYINT(1)-YES1 เปิด, 0 ปิด (ค่าเริ่มต้น 1)
5open_timeTIME-YESเวลาเปิด (ค่าเริ่มต้น 08:00)
6close_timeTIME-YESเวลาปิด (ค่าเริ่มต้น 18:00)

D7 แฟ้มข้อมูลการแจ้งเตือน

ตารางที่ 3.11 ตารางแจ้งเตือน (tbl_notifications)

ใช้เก็บการแจ้งเตือนของผู้ใช้ เช่น ผลการอนุมัติคำขอยืมและการจองห้อง

ลำดับชื่อฟิลด์ประเภทข้อมูลคีย์Nullคำอธิบาย
1idINT(11)PKNOรหัสแจ้งเตือน
2user_idVARCHAR(12)FKNOอ้างอิง tbl_users.user_id (ผู้รับแจ้งเตือน)
3booking_idINT(11)-NOรหัสคำขอยืม หรือรหัสการจองห้อง ตามประเภทการแจ้งเตือน
4typeTINYINT(1)-NOประเภทการแจ้งเตือน (รหัสตัวเลขที่ระบบใช้แยกรูปแบบข้อความ)
5messageTEXT-NOข้อความแจ้งเตือน
6is_readTINYINT(1)-YES1 อ่านแล้ว (ค่าเริ่มต้น 0)
7created_atTIMESTAMP-NOเวลาแจ้ง (ค่าเริ่มต้น เวลาปัจจุบัน)