2013-01-12 32 views
0

我正在使用代码第一种方法,并且想要创建一个名为Classes的表。该表将持有的下列信息:在SQL中存储一组日期表

  • 名称(数学1)
  • 代码(MATA)
  • 学科(数学的有关)
  • 说明(数学是好玩)
  • 的BeginTime(DATETIME)
  • 结束时间(日期时间)
  • BEGINDATE(日期时间)
  • 结束日期(日期时间)

除了上述,我想指定天类会发生:

  • 名称(数学1)
  • 代码(MATA)
  • 学科(数学的有关)
  • 说明(数学是有趣)
  • 的BeginTime(日期时间)
  • 结束时间(日期时间)
  • BEGINDATE(DATETIME)
  • 结束日期(日期时间)
  • 周一(布尔)
  • 周二(布尔)

我不想做上述情况,它只是似乎效率低下,尤其是当我需要根据当前日期调用一个类时(例如,获取星期一出现的所有课程)。

那么,我应该有什么样的表结构?

感谢

回答

2

您应该创建2个表,1 Classes和1 ClassSchedules。通过ClassId列加入您的表格。

顺便说一句,你不应该需要2列BeginTimeBeginDate,这些应存放在同一列 - 这同样适用于EndTimeEndDate

+0

这就是我的想法。谢谢! – msivri

1

您应该尝试以下操作;

CREATE TABLE classes(
Name varchar(255), 
Code varchar(255), 
Subject varchar(255), 
Description varchar(255), 
BeginTime date, 
EndTime Date, 
BeginDate Date, 
EndDate Date, 
) 

CREATE TABLE classdates(
Classname varchar(255), 
Classdate varchar(255) 
) 

Select cl.*,d.classdate from classes cl (nolock) 
join classdates d 
on d.classname = cl.classname 

如果你有一个大的数据库中,我将采取第一项建议,并与名称一起添加的ClassID,然后使其成为一个主键后加入的ClassID。

+0

我不会在'date'类型的列中存储一个名为'BeginTime'的东西。你打算“时间”吗? –

+0

我将使用ClassID,谢谢 – msivri

+0

我没有时间。 BeginTime应该是一个日期类型,你可以格式化从查询中检索日期的日期。 日期会给你更多的灵活性; http://msdn.microsoft.com/en-us/library/bb630352.aspx – Taicho