Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server ASP.Net游戏网站表的SQL DB设计_Sql Server_Database Design_Asp.net 4.5 - Fatal编程技术网

Sql server ASP.Net游戏网站表的SQL DB设计

Sql server ASP.Net游戏网站表的SQL DB设计,sql-server,database-design,asp.net-4.5,Sql Server,Database Design,Asp.net 4.5,我正在使用ASP.NET和SQL创建一个游戏信息网站,需要一些帮助来确定设计保存发布日期的表的最佳方式。我在考虑一个两列的设计(ExactDate,RoughDate),每个列都可以为空,但它似乎并不正确。该表将需要能够容纳以下日期格式,我想按最接近当前日期的日期进行订购(因此提前推出的游戏将首先列出): 关于如何最好地处理不同的日期有什么想法吗?根据我上面的评论,我认为可能值得考虑的是,您是否需要一个2列显示日期/排序日期系统之外的任何东西-我倾向于使用这个简单的选项,直到它增加了太多的摩擦,

我正在使用ASP.NET和SQL创建一个游戏信息网站,需要一些帮助来确定设计保存发布日期的表的最佳方式。我在考虑一个两列的设计(
ExactDate
RoughDate
),每个列都可以为空,但它似乎并不正确。该表将需要能够容纳以下日期格式,我想按最接近当前日期的日期进行订购(因此提前推出的游戏将首先列出):


关于如何最好地处理不同的日期有什么想法吗?

根据我上面的评论,我认为可能值得考虑的是,您是否需要一个2列显示日期/排序日期系统之外的任何东西-我倾向于使用这个简单的选项,直到它增加了太多的摩擦,在这一点上,您可以重新考虑

就一个不那么简单的模型而言;如果发布日期(及其相对顺序)非常重要,您希望确保2013年初出现在2013年2月21日之前(反之亦然),那么您可以建立一个“发布日期”表

这将在未来20年或其他任何时间(仍然只有几千行)的每种组合中预加载,您只需将其视为FK并使用常用的联接语法即可使用它。可以通过“开始/结束”列进行排序,您也可以将搜索范围限制在这些范围内(可能只针对可能在未来6周或其他时间发布的游戏)


正如我所说,我真的不建议直接走这条路线,因为它的主要好处是易于与ui设计师集成和一致性(因为除了选择一个选项之外,没有人为的决策),所以在你完成网站建设之前,我绝对不会费心:)

我会选择两栏式设计(显示文本nvarchar,重新生效日期)

ReleaseDate将是一个计算列,它将根据DisplayText列中存储的数据计算其日期。只需创建UDF,它将根据DisplayText列中存储的数据计算日期,您应该很好。此UDF将有点复杂,但不会太多


如果您想降低性能密集度,请将ReleaseDate创建为非计算列,但每次插入或更新DisplayText中的值时,都要使用触发器更新其值。

为什么两列看起来不正确?具有“显示日期/文本”和“排序日期”似乎完全有效,可以让您避开诸如2013年第1季度应在2013年初之前或之后出现的问题,让您继续交付。@chrisb两列的最初想法是一个具有正常日期,另一个具有基于文本的日期。我没有考虑显示日期和排序日期两列设置。我认为你实际上会工作得很好。
DD-MM-YYYY
(Q1/Q2/Q3/Q4)-YYYY
(Early/Mid/Late)-YYYY
(Spring/Summer/Fall/Winter)-YYYY
TBA
DisplayText | Type | Start      | End
01/01/2013  | 1    | 2013-01-01 | 2013-01-01
Q1-2013     | 2    | 2013-01-01 | 2013-03-31
Early-2013  | 3    | 2013-01-01 | 2013-06-30