需求:关于教学楼中教室在周几某个时间段是否被占用的数据库设计

具体代码如下:

  1. -------------------教学楼维度
  2. CREATE TABLE TeacBuild
  3. (
  4. tbID int not null primary key,
  5. tbName varchar(100)
  6. )
  7.  
  8. insert into TeacBuild values(1,'教学楼A')
  9. insert into TeacBuild values(2,'教学楼B')
  10. insert into TeacBuild values(3,'教学楼C')
  11. ------------------教室维度
  12. --drop table Room
  13. CREATE TABLE Room
  14. (
  15. seq int identity(1,1),
  16. TID int,
  17. WeekID int,
  18. sno varchar(100),
  19. ID INT NOT NULL,
  20. Rid int not null ,
  21. Rname varchar(20),
  22. tbID int
  23. )
  24.  
  25. ---------------------------------------------周一时间点为8点到16点的
  26. INSERT INTO Room values(1,1,'F',1,101,'101教室',1)
  27. INSERT INTO Room values(1,2,'T',1,101,'101教室',1)
  28. INSERT INTO Room values(1,3,'T',1,101,'101教室',1)
  29. INSERT INTO Room values(1,4,'T',1,101,'101教室',1)
  30. INSERT INTO Room values(1,5,'T',1,101,'101教室',1)
  31. ---------------------------------------------周二时间点为8点到16点的
  32. INSERT INTO Room values(2,1,'F',1,101,'101教室',1)
  33. INSERT INTO Room values(2,2,'F',1,101,'101教室',1)
  34. INSERT INTO Room values(2,3,'T',1,101,'101教室',1)
  35. INSERT INTO Room values(2,4,'T',1,101,'101教室',1)
  36. INSERT INTO Room values(2,5,'T',1,101,'101教室',1)
  37. ---------------------------------------------周三时间点为8点到16点的
  38. INSERT INTO Room values(3,1,'F',1,101,'101教室',1)
  39. INSERT INTO Room values(3,2,'T',1,101,'101教室',1)
  40. INSERT INTO Room values(3,3,'T',1,101,'101教室',1)
  41. INSERT INTO Room values(3,4,'T',1,101,'101教室',1)
  42. INSERT INTO Room values(3,5,'T',1,101,'101教室',1)
  43. -------------------------------------------------周四时间点为8点到16点的
  44. INSERT INTO Room values(4,1,'F',1,101,'101教室',1)
  45. INSERT INTO Room values(4,2,'F',1,101,'101教室',1)
  46. INSERT INTO Room values(4,3,'T',1,101,'101教室',1)
  47. INSERT INTO Room values(4,4,'T',1,101,'101教室',1)
  48. INSERT INTO Room values(4,5,'T',1,101,'101教室',1)
  49. ---------------------------------------------周五时间点为8点到16点的
  50. INSERT INTO Room values(5,1,'F',1,101,'101教室',1)
  51. INSERT INTO Room values(5,2,'T',1,101,'101教室',1)
  52. INSERT INTO Room values(5,3,'T',1,101,'101教室',1)
  53. INSERT INTO Room values(5,4,'T',1,101,'101教室',1)
  54. INSERT INTO Room values(5,5,'T',1,101,'101教室',1)
  55.  
  56. -----------------时间维度
  57. CREATE TABLE DayTime
  58. (
  59. TID int primary key,
  60. Tdesc varchar(20)
  61. )
  62.  
  63. insert into DayTime values(1,'8:00')
  64. insert into DayTime values(2,'10:00')
  65. insert into DayTime values(3,'14:00')
  66. insert into DayTime values(4,'16:00')
  67. -----------------周记天数维度
  68. --drop table WeekTime
  69. CREATE TABLE WeekTime
  70. (
  71. WeekID int primary key,
  72. Weekdesc varchar(20)
  73. )
  74.  
  75. insert into WeekTime values(1,'周一')
  76. insert into WeekTime values(2,'周二')
  77. insert into WeekTime values(3,'周三')
  78. insert into WeekTime values(4,'周四')
  79. insert into WeekTime values(5,'周五')
  80.  
  81. --状态维度表
  82. --drop table STATUE
  83. CREATE TABLE STATUE
  84. (
  85. id int,
  86. Sno varchar,
  87. Staname varchar(10)
  88. )
  89. ---F为空 T为被占用
  90. insert into STATUE values(1,'F','空')
  91. insert into STATUE values(2,'T','占用')
  92.  
  93. --查询结果
  94. select tb.tbName,rm.Rname,wt.Weekdesc,dt.Tdesc,su.Staname from Room rm --教室表
  95. inner join TeacBuild tb on rm.tbID=tb.tbID --教学楼表
  96. inner join DayTime dt ON dt.TID=rm.TID --时间段表
  97. inner join WeekTime wt on wt.WeekID=rm.WeekID --周表
  98. inner join STATUE su on su.Sno=rm.sno --状态表
  99. -----------------------------锁定一条数据
  100. where 1=1 and
  101. tb.tbID=1 and
  102. rm.ID=1 and
  103. dt.TID=1 and
  104. wt.WeekID=1 and
  105. su.id=1

上述数据查询后的结果为:

这是我自己写的一个简单设计,如果有大神有更好的意见,请指点一下,学习学习

SQLserver关于教学楼中教室在某个时间段是否被占用的数据库设计的更多相关文章

  1. B-Tree索引在sqlserver和mysql中的应用

    在谈论数据库性能优化的时候,通常都会提到“索引”,但很多人其实并没有真正理解索引,也没有搞清楚索引为什么就能加快检索速度,以至于在实践中并不能很好的应用索引.事实上,索引是一种廉价而且十分有效的优化手 ...

  2. SQLSERVER与C#中数据类型的对应关系

    SQLSERVER与C#中数据类型的对应关系 ///<summary> ///数据库中与C#中的数据类型对照 ///</summary> ///<paramname=&q ...

  3. SQL Server 中如何做到连续时间段的拆分?

    今天在工作中遇到了一个很实际的问题,客户在OA接口的员工休假中间表中提供了连续时间段的休假记录,例如: 张三,2018-12-1 ~2018-12-31 ,病假,31天.这样带来的问题是,如果我需要统 ...

  4. 转 update关联更新在sqlserver和oracle中的实现

    sqlserver和oracle中实现update关联更新的语法不同,都可以通过inline view(内嵌视图)来实现,总的来说sqlserver更简单些. 测试例子如下: create table ...

  5. SQLServer与ASP中DATEDIFF函数区别

    一.SQLServer: 格式: DATEDIFF(interval,startdate,enddate) interval参数: 年-yy,yyyy 季度-qq,q 月-mm,m 年中的日-dy,y ...

  6. SQLServer 事务复制中使用脚本添加某个对象的发布

    原文:SQLServer 事务复制中使用脚本添加某个对象的发布 -- use [发布库] --添加表:创建项目并将其添加到发布中 exec sp_addarticle @publication = N ...

  7. SqlServer 监控发布中未分发的命令数

    原文:SqlServer 监控发布中未分发的命令数 对于查看未分发的命令数,我们通常这样查看. 然而当服务器有很多发布时,一个个打开查看就很麻烦 当然,如果想用脚本查看就更方便了,运行下面的语句 -- ...

  8. SQLSERVER 去除字符串中特殊字符

    原文:SQLSERVER 去除字符串中特殊字符 /*========================================================================== ...

  9. SqlServer判断表中某列是否包含中文,英文,纯数字

    原文:SqlServer判断表中某列是否包含中文,英文,纯数字 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog ...

随机推荐

  1. PHP插件技术-插件钩子(hooks)分析

    最近准备做一个开源的个人博客系统,因为在构想中要添加插件功能,所以就研究了一下插件功能的实现方法. 插件的功能按照本人自己的理解就是对已有的程序进行功能方面的添加以及改进,插件要与程序所提供的接口进行 ...

  2. Part 64 to 66 Talking about Indexers in C#

    Part 64 - C# Tutorial - How and where are indexers used in .net Part 65 - C# Tutorial - Indexers in ...

  3. sql server 锁学习

    insert 默认加的锁是 不允许select,update  但是可以insert update 默认加的锁是 不允许 update 可以 select ,insert

  4. ACCESS的System.Data.OleDb.OleDbException: INSERT INTO 语句的语法错误

    一直用的是SQL 数据库,突然改用Access了,使用起来就是没有SQL 顺畅,老是出来些意想不到的错误.今天用Access做的网站程序进行添加数据,调试了一下午,总是异常…… 提示ACCESS的Sy ...

  5. UI2_ScrollViewHomeWork

    // // AppDelegate.m // UI2_ScrollViewHomeWork // // Created by zhangxueming on 15/7/13. // Copyright ...

  6. UI2_UISwitch与UIActivity

    // // ViewController.m // UI2_UISwitch与UIActivity // // Created by zhangxueming on 15/7/7. // Copyri ...

  7. javascript之基本包装类型(Boolean,Number,String)基础篇

    前几天整理了javascript中Array方面的知识,但是String中的一些方法多多少少和Array里的方法有些类似容易混淆,就顺便连同String所在的包装类一起整理一下,希望可以帮助到初学者, ...

  8. 杭电ACM2096--小明A+B

    http://acm.hdu.edu.cn/showproblem.php?pid=2096 本来就是很简单.但是数据的大小有要求. (a%100+b%100)%100和(a+b)%100本来没有什么 ...

  9. AutoEventWireup="false"

    在 Web 服务器控件中,某些事件(通常是 Click 事件)会导致窗体被回发到服务器.HTML 服务器控件和 Web 服务器控件(如 TextBox 控件)中的更改事件将被捕获,但不会立即导致发送. ...

  10. [Guava源码分析]Ordering:排序

    我的技术博客经常被流氓网站恶意爬取转载.请移步原文:http://www.cnblogs.com/hamhog/p/3876466.html,享受整齐的排版.有效的链接.正确的代码缩进.更好的阅读体验 ...