我有一个编码问题,我必须存储“注释”和注释适用的日期。考虑到:
注 1 您好,今天客户先生打电话安排这些约会。2009 年 8 月 30 日、2009 年 8 月 31 日、2009 年 5 月 9 日
注 2 照常营业。2009 年 8 月 30 日
注 3 餐厅已关闭。2009 年 6 月 9 日
我需要将以下数据存储在数据库中,同时维护索引以进行高效检索,也就是说,我的客户端应用程序需要选择一个日期,并单独或部分检索与该日期相关的所有注释。
我和几个同事和朋友讨论过,并得出了这个设计。请注意,如果设计优雅,我希望能够将所有信息存储在一张表中,或者更多。
> Date Bitmap | Month | Year | Note
> 101.. 9 2009 Blah Blah // applies to 1st and 3rd
> 0001... 10 2009 Blah2 // applies to the 4th
> 100 9 2009 Blah23
当用户从多日期选择器中选择以下日期时:9 月 1 日他将获得 Blah Blah 和 Blah23。单个日期时间对象将重复注释,或强制使用外键创建另一个表。
从某种意义上说,我可以在第一列中存储该注释适用于一个月中的哪几天。在位图中,事情可能非常高效。任何其他方式(带有 Note-ID 的链接表,或带有 ID 的所有日期的表)都导致注释字段或重复日期的丑陋重复。我也不想考虑使用带有分隔符的日期集的文本字段,以及在搜索时解析它的丑陋代码。
如您所知,我在这个项目上拥有大量时间。
但是客户端应用程序RETRIEVE怎么能说出给定日期集的所有注释呢?MSSQL中是否有任何位操作?所以我可以检索所有行,比如说,在那个二进制字段的第 5 位和第 7 位中有一个“1”?
我不能使用 BETWEEN 因为我可能有零星的日期不在一个范围内或任何东西或排序内。想想有一个数据类型,它可以表示从 1 到 31 的任何数字。这就是我对位图的看法。
我还要说,我们可以添加一个额外的文本字段,其中真实日期(在真实文本中)将由例程填充。但对于其余部分,这个应用程序将是主界面,很少有用户需要查看丑陋的表格。
我是否过度设计,或者你能帮助我吗?
感谢你的回复。
狮子座