SQLserver关于教学楼中教室在某个时间段是否被占用的数据库设计
需求:关于教学楼中教室在周几某个时间段是否被占用的数据库设计
具体代码如下:
-------------------教学楼维度
CREATE TABLE TeacBuild
(
tbID int not null primary key,
tbName varchar(100)
) insert into TeacBuild values(1,'教学楼A')
insert into TeacBuild values(2,'教学楼B')
insert into TeacBuild values(3,'教学楼C')
------------------教室维度
--drop table Room
CREATE TABLE Room
(
seq int identity(1,1),
TID int,
WeekID int,
sno varchar(100),
ID INT NOT NULL,
Rid int not null ,
Rname varchar(20),
tbID int
) ---------------------------------------------周一时间点为8点到16点的
INSERT INTO Room values(1,1,'F',1,101,'101教室',1)
INSERT INTO Room values(1,2,'T',1,101,'101教室',1)
INSERT INTO Room values(1,3,'T',1,101,'101教室',1)
INSERT INTO Room values(1,4,'T',1,101,'101教室',1)
INSERT INTO Room values(1,5,'T',1,101,'101教室',1)
---------------------------------------------周二时间点为8点到16点的
INSERT INTO Room values(2,1,'F',1,101,'101教室',1)
INSERT INTO Room values(2,2,'F',1,101,'101教室',1)
INSERT INTO Room values(2,3,'T',1,101,'101教室',1)
INSERT INTO Room values(2,4,'T',1,101,'101教室',1)
INSERT INTO Room values(2,5,'T',1,101,'101教室',1)
---------------------------------------------周三时间点为8点到16点的
INSERT INTO Room values(3,1,'F',1,101,'101教室',1)
INSERT INTO Room values(3,2,'T',1,101,'101教室',1)
INSERT INTO Room values(3,3,'T',1,101,'101教室',1)
INSERT INTO Room values(3,4,'T',1,101,'101教室',1)
INSERT INTO Room values(3,5,'T',1,101,'101教室',1)
-------------------------------------------------周四时间点为8点到16点的
INSERT INTO Room values(4,1,'F',1,101,'101教室',1)
INSERT INTO Room values(4,2,'F',1,101,'101教室',1)
INSERT INTO Room values(4,3,'T',1,101,'101教室',1)
INSERT INTO Room values(4,4,'T',1,101,'101教室',1)
INSERT INTO Room values(4,5,'T',1,101,'101教室',1)
---------------------------------------------周五时间点为8点到16点的
INSERT INTO Room values(5,1,'F',1,101,'101教室',1)
INSERT INTO Room values(5,2,'T',1,101,'101教室',1)
INSERT INTO Room values(5,3,'T',1,101,'101教室',1)
INSERT INTO Room values(5,4,'T',1,101,'101教室',1)
INSERT INTO Room values(5,5,'T',1,101,'101教室',1) -----------------时间维度
CREATE TABLE DayTime
(
TID int primary key,
Tdesc varchar(20)
) insert into DayTime values(1,'8:00')
insert into DayTime values(2,'10:00')
insert into DayTime values(3,'14:00')
insert into DayTime values(4,'16:00')
-----------------周记天数维度
--drop table WeekTime
CREATE TABLE WeekTime
(
WeekID int primary key,
Weekdesc varchar(20)
) insert into WeekTime values(1,'周一')
insert into WeekTime values(2,'周二')
insert into WeekTime values(3,'周三')
insert into WeekTime values(4,'周四')
insert into WeekTime values(5,'周五') --状态维度表
--drop table STATUE
CREATE TABLE STATUE
(
id int,
Sno varchar,
Staname varchar(10)
)
---F为空 ,T为被占用
insert into STATUE values(1,'F','空')
insert into STATUE values(2,'T','占用') --查询结果
select tb.tbName,rm.Rname,wt.Weekdesc,dt.Tdesc,su.Staname from Room rm --教室表
inner join TeacBuild tb on rm.tbID=tb.tbID --教学楼表
inner join DayTime dt ON dt.TID=rm.TID --时间段表
inner join WeekTime wt on wt.WeekID=rm.WeekID --周表
inner join STATUE su on su.Sno=rm.sno --状态表
-----------------------------锁定一条数据
where 1=1 and
tb.tbID=1 and
rm.ID=1 and
dt.TID=1 and
wt.WeekID=1 and
su.id=1
上述数据查询后的结果为:
这是我自己写的一个简单设计,如果有大神有更好的意见,请指点一下,学习学习
SQLserver关于教学楼中教室在某个时间段是否被占用的数据库设计的更多相关文章
- B-Tree索引在sqlserver和mysql中的应用
在谈论数据库性能优化的时候,通常都会提到“索引”,但很多人其实并没有真正理解索引,也没有搞清楚索引为什么就能加快检索速度,以至于在实践中并不能很好的应用索引.事实上,索引是一种廉价而且十分有效的优化手 ...
- SQLSERVER与C#中数据类型的对应关系
SQLSERVER与C#中数据类型的对应关系 ///<summary> ///数据库中与C#中的数据类型对照 ///</summary> ///<paramname=&q ...
- SQL Server 中如何做到连续时间段的拆分?
今天在工作中遇到了一个很实际的问题,客户在OA接口的员工休假中间表中提供了连续时间段的休假记录,例如: 张三,2018-12-1 ~2018-12-31 ,病假,31天.这样带来的问题是,如果我需要统 ...
- 转 update关联更新在sqlserver和oracle中的实现
sqlserver和oracle中实现update关联更新的语法不同,都可以通过inline view(内嵌视图)来实现,总的来说sqlserver更简单些. 测试例子如下: create table ...
- SQLServer与ASP中DATEDIFF函数区别
一.SQLServer: 格式: DATEDIFF(interval,startdate,enddate) interval参数: 年-yy,yyyy 季度-qq,q 月-mm,m 年中的日-dy,y ...
- SQLServer 事务复制中使用脚本添加某个对象的发布
原文:SQLServer 事务复制中使用脚本添加某个对象的发布 -- use [发布库] --添加表:创建项目并将其添加到发布中 exec sp_addarticle @publication = N ...
- SqlServer 监控发布中未分发的命令数
原文:SqlServer 监控发布中未分发的命令数 对于查看未分发的命令数,我们通常这样查看. 然而当服务器有很多发布时,一个个打开查看就很麻烦 当然,如果想用脚本查看就更方便了,运行下面的语句 -- ...
- SQLSERVER 去除字符串中特殊字符
原文:SQLSERVER 去除字符串中特殊字符 /*========================================================================== ...
- SqlServer判断表中某列是否包含中文,英文,纯数字
原文:SqlServer判断表中某列是否包含中文,英文,纯数字 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog ...
随机推荐
- Uva 10596 - Morning Walk 欧拉回路基础水题 并查集实现
题目给出图,要求判断不能一遍走完所有边,也就是无向图,题目分类是分欧拉回路,但其实只要判断度数就行了. 一开始以为只要判断度数就可以了,交了一发WA了.听别人说要先判断是否是联通图,于是用并查集并一起 ...
- linux_cpu信息查询
查看cpu信息: [root@css-management ~]# cat /proc/cpuinfo processor : 0vendor_id : GenuineIntelcpu family ...
- 使用SFTP上传文件到服务器的简单使用
最近用到SFTP上传文件查找了一些资料后自己做了一点总结,方便以后的查询 /** * 将文件上传到服务器 * * @param filePath * 文件路径 * @param channelSftp ...
- 为DEDE织梦添加XMl网站地图
在后台管理: 核心-频道模型-单页文档管理-增加一个新页面 模版文件放在你现在使用的templets目录下,sitemap.xml的内容如下 <?xml version="1.0&qu ...
- CF 118E Bertown roads 桥
118E Bertown roads 题目:把无向图指定边的方向,使得原图变成有向图,问能否任意两点之间互达 分析:显然如果没有桥的话,存在满足题意的方案.输出答案时任意从一个点出发遍历一遍即可. 求 ...
- 关于类似(i++)+(++i)
这是一个“然并卵”的问题,因为没有人愿意在代码中给自己找这种麻烦,看到书上讲到这个问题忍不住想顺势总结下,就从表达式说起吧. 在js中,同一般的语言一样,表达式分很多种. 对象和数组的初始化表达式:即 ...
- canvas-js贝塞尔曲线代码在线生成工具
详细内容请点击 canvas贝塞尔曲线代码在线生成工具 可以快速生成二次.三次贝塞尔曲线的源码生成器,方便经常使用到canvas画图的同学使用,可以直接预览效果随意画出自己想要的图像. 生成源码效果预 ...
- 【CSS3】---曲线阴影翘边阴影
效果图 代码 index <!DOCTYPE html> <html> <head> <meta charset=utf-8 /> <title& ...
- C# 输出24小时格式时间
比如 MessageBox.Show(DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss")); 会输出 2014-4-3 5:08:4[1 ...
- NAT
WRITE BY YANGWJ 一. 配置静态Nat 实验图如下: 1. 将网络基本条件配置好,包括路由要可达,即pc1可以ping到server1 2. ...