首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这个代码第一数据库设计是好的c#吗?

这个代码第一数据库设计是好的c#吗?
EN

Stack Overflow用户
提问于 2014-01-08 08:16:56
回答 3查看 142关注 0票数 1

首先,我正在使用EntityFramework 6代码进行在线面试预订项目。在这个项目中,候选人只能预订来自任何国家的面试。我必须管理国家,城市,日期和TimeSlots,并给予行政管理,以便他/她可以插入的价值,根据可用性的面试。

为此,我决定采用以下数据库模式(此数据库模式仅用于管理每个国家的面试时段)

Country与城市有一对多的关系

代码语言:javascript
复制
Id
Name
Code

与日期有一对多的关系

代码语言:javascript
复制
Id
Name
CountryId

Date与TimeSlot有一对多的关系

代码语言:javascript
复制
Id
Date
Booked
CityId

TimeSlot

代码语言:javascript
复制
Id
Start
End
Duration
Booked
DateId

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

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-01-08 08:23:42

  1. 我个人更喜欢给PK的唯一名称,基于他们的表,例如CountryId而不是Id -使阅读FK的更容易。
  2. 日期是相当糟糕的名称,一个桌子-也许BookingDate,甚至只是预订是更好的?TimeSlot也一样,也许是BookingTimeSlop?
  3. 开始和结束都是糟糕的名字,也许是StartTime或StartOfBooking.结局也一样。
  4. 持续时间-结束和开始之间的区别.你为什么要储存这个价值?

你们的桌子确实有不错的裁判。正直做得很好。祝好运!

票数 1
EN

Stack Overflow用户

发布于 2014-01-08 08:53:52

除了robnick的优秀建议外,还要考虑以下几点:

  1. Date似乎做得不多,请考虑将其与TimeSlot合并。复制日期信息可能会导致日期与TimeSlot之间的不同步。
  2. 没有办法知道谁订了TimeSlot。几乎可以保证您将需要一个PersonID或TimeSlot中的什么东西。
  3. 使用此设计,您无法预订尚未创建的TimeSlot。这就成了维护的负担。考虑移除TimeSlot属性,只在预订了一个实体实例之后才创建一个实体实例。配置配置中的可用时隙或使用不同的实体模型可能会更容易。
票数 0
EN

Stack Overflow用户

发布于 2014-01-08 09:00:32

命名字段的一般规则..。如果它听起来太像“名称”、“日期”、“ID”等等,那么你最好添加一些东西来使它像fldName之类的。保留名称很麻烦,因为很多组件都使用它。除了字段名,在我看来还不错。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20990207

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档