这个代码首先是数据库设计好c#?

时间:2014-01-08 08:16:56

标签: c# sql database entity-framework code-first

我正在使用EntityFramework 6代码开发在线面试预订项目。在这个项目中,候选人只能从任何国家预订面试。我必须管理国家,城市,日期和时间段,并控制管理员,以便他/她可以根据面试的可用性插入值。

因此,我决定使用以下数据库模式(此数据库模式仅用于管理每个国家/地区的访谈位置

国家/地区 [与城市有一对多的关系]

Id
Name
Code

城市 [与日期有一对多的关系]

Id
Name
CountryId

日期 [与TimeSlot有一对多的关系]

Id
Date
Booked
CityId

TimeSlot

Id
Start
End
Duration
Booked
DateId

为了管理每个国家/地区的可用预订采访时间段,我决定创建上表(粗体)和属性(代码块)。我还提到了表之间的关系。

我在数据库设计方面不擅长,所以我只想让你们回顾一下,让我知道我可以做得更好吗?

3 个答案:

答案 0 :(得分:1)

  1. 我个人更喜欢根据他们的表格给出PK的独特名称,例如: CountryId而不是Id - 使阅读FK变得更容易。
  2. 日期是一张桌子的名字很差 - 也许是BookingDate甚至只是预订更好? TimeSlot也一样,也许是BookingTimeSlop?
  3. 重新开始和结束都是糟糕的名字,可能是StartTime或StartOfBooking ......对于End来说也是如此。
  4. 持续时间 - 是结束与开始之间的差异......为什么需要存储该值?
  5. 你的桌子确实有不错的参考。诚信做得好。祝你好运!

答案 1 :(得分:0)

除了robnick的优秀建议外,请考虑以下事项:

  1. 日期似乎没有太大作用,请考虑将其与TimeSlot合并。复制日期信息可能会导致Date和TimeSlot之间的日期不同步。
  2. 无法确定谁预订了TimeSlot。几乎可以保证你在TimeSlot中需要PersonID或其他东西。
  3. 使用此设计,您无法预订尚未创建的TimeSlot。这成为维护负担。考虑删除Booked属性,并仅在预订TimeSlot后创建实体实例。在配置中使用不同的实体模型或使用不同的实体模型可能更容易配置。

答案 2 :(得分:0)

命名字段中的一般规则...如果它听起来像'姓名','日期','ID'等常见,那么你最好添加一些东西,使它像fldName等。保留的名称很麻烦,因为许多组件都使用它。除了字段名称,它们看起来对我很好。