0

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

  • 姓名(数学 1)
  • 代码 (MatA)
  • 学科(数学)
  • 说明(数学很有趣)
  • 开始时间(日期时间)
  • 结束时间(日期时间)
  • 开始日期(日期时间)
  • 结束日期(日期时间)

除了上述之外,我想指定上课的日期:

  • 姓名(数学 1)
  • 代码 (MatA)
  • 学科(数学)
  • 说明(数学很有趣)
  • 开始时间(日期时间)
  • 结束时间(日期时间)
  • 开始日期(日期时间)
  • 结束日期(日期时间)
  • 星期一(布尔值)
  • 星期二(布尔值)
  • 等等

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

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

谢谢

4

2 回答 2

2

您应该创建 2 个表,1 个 forClasses和 1 个 for ClassSchedulesClassId用一列连接您的表。

顺便说一句,你不应该需要 2 列BeginTimeand BeginDate,它们应该存储在同一列中—— EndTimeand 也是如此EndDate

于 2013-01-12T06:05:43.437 回答
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 设为主键后加入 ClassID。

于 2013-01-12T06:15:41.300 回答