我正在开展一个项目,我需要在工作日结合多个时段来产生有效的时段。
参见下面的示例
时间段1 = 太阳,星期一,星期二,星期三,星期四,星期五,星期五09:00至17:00 > 时间段2 =太阳,星期一,星期二,星期三,星期四,星期五,坐在18:00到23:00
时间间隔不适用于粗体中的天数标记。
有效时间段=
Sun 18:00 to 23:00
Mon 09:00 to 17:00
Tue 09:00 to 17:00 and 18:00 to 23:00
Wed No access
Thu 18:00 to 23:00
Fri 09:00 to 17:00
Sat 09:00 to 17:00 and 18:00 to 23:00
如何以一种易于理解和处理的方式将其存储在数据库中?
答案 0 :(得分:0)
MS SQL 2008 +的表结构
CREATE TABLE TimeSlots(
id INT identity(1, 1) PRIMARY KEY
,groupId int
);
CREATE TABLE TimeSlotItems(
id INT identity(1, 1) PRIMARY KEY
,slotid INT FOREIGN KEY REFERENCES TimeSlots(id)
,weekday VARCHAR(3)
,startTime TIME(0)
,endTime TIME(0)
);
-- 2 slots of group 10
INSERT INTO TimeSlots(groupId)
VALUES (10), (10);
INSERT INTO TimeSlotItems(slotid,weekday,startTime,endTime)
VALUES
(1, 'Sun', '09:00' ,'17:00')
,(1, 'Mon', '09:00' ,'17:00')
--...
,(2, 'Sun', '18:00' ,'23:00')
,(2, 'Mon', '18:00' ,'23:00')
;
SELECT s.groupId, i.*
FROM TimeSlotItems i
JOIN TimeSlots s ON s.Id=i.slotid;