在SQL表中存储一组天

时间:2013-01-12 06:02:20

标签: database-design

我正在使用代码第一种方法,并希望创建一个名为Classes的表。该表将包含以下信息:

  • 姓名(数学1)
  • 代码(MatA)
  • 主题(数学)
  • 描述(数学很有趣)
  • BeginTime(DateTime)
  • EndTime(DateTime)
  • BeginDate(DateTime)
  • EndDate(DateTime)

除了上述内容之外,我还想指定课程将要发生的日子:

  • 姓名(数学1)
  • 代码(MatA)
  • 主题(数学)
  • 描述(数学很有趣)
  • BeginTime(DateTime)
  • EndTime(DateTime)
  • BeginDate(DateTime)
  • EndDate(DateTime)
  • 星期一(布尔)
  • 星期二(布尔)

我不想做上述事情,它似乎效率低下,特别是当我需要根据当前日期调用一个类时(即获取周一出现的所有类)。

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

由于

2 个答案:

答案 0 :(得分:2)

您应创建2个表,1个用于Classes,1个用于ClassSchedules。使用ClassId列加入您的表格。

顺便说一句,BeginTimeBeginDate不需要2列,这些列应该存储在同一列中 - EndTimeEndDate也是如此。

答案 1 :(得分: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。