Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

วิธีที่ดีที่สุดในการจัดเก็บกิจกรรมรายสัปดาห์ใน MySQL

ออกแบบตารางสำหรับกิจกรรมรายสัปดาห์

วิธีที่แนะนำคือสร้างคอลัมน์สำหรับแต่ละวันของสัปดาห์ โดยใช้ชนิดข้อมูล TINYINT(1) (0 = ไม่มีกิจกรรม, 1 = มีกิจกรรม)

โครงสร้างตาราง

CREATE TABLE WeeklyEventDemo (
    ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    EventName VARCHAR(20),
    Monday TINYINT(1),
    Tuesday TINYINT(1),
    Wednesday TINYINT(1),
    Thursday TINYINT(1),
    Friday TINYINT(1),
    Saturday TINYINT(1),
    Sunday TINYINT(1),
    StartDate DATE,
    EndDate DATE
);

ตัวอย่างข้อมูล

INSERT INTO WeeklyEventDemo(EventName, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday, StartDate, EndDate)
VALUES ('Event-1', 0, 0, 0, 0, 1, 0, 0, '2018-03-21', '2019-03-08');

INSERT INTO WeeklyEventDemo(EventName, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday, StartDate, EndDate)
VALUES ('Event-2', 0, 0, 0, 0, 0, 1, 0, '2018-03-21', '2019-03-08');

สืบค้นกิจกรรมวันศุกร์

SELECT * FROM WeeklyEventDemo WHERE Friday = 1;

ข้อดีของรูปแบบนี้

  • สืบค้นได้เร็วด้วย Index บนคอลัมน์วัน
  • อ่านเข้าใจง่าย รองรับกิจกรรมซ้ำหลายวัน
  • จัดการช่วงวันที่ได้ด้วย StartDate และ EndDate

ทางเลือกอื่น

สำหรับระบบซับซ้อนกว่านี้ อาจพิจารณาใช้ตารางแยก (EventDays) เชื่อมโยงด้วย Foreign Key แทน