存储此类信息的适当方式
我必须将以下信息存储到数据库中,以供 .NET 程序集使用。它们代表某种颜色处于活动状态的时间:
红色:周一至周五 16:30 - 18:30(包括银行假期)
琥珀色:09:00 - 16:30 和 16:30周一至周五 18:30 - 20:30,包括银行假日和工作日 周六和周日 16:30 - 18:30太阳
绿色:00:00 - 09:00 和 09:00 20:30 - 周一至周五 24:00 包括银行假期和工作日00:00 - 16:30 * 18:30 - 24:00 周六&太阳
我最初使用这样的数据库模式:
列名称 ID Pk 为空?数据类型 默认直方图加密 海藻盐
RED_WEEKDAY_START 14 Y NUMBER 无
RED_WEEKDAY_END 15 Y NUMBER 无
RED_WEEKEND_START 16 Y NUMBER 无
RED_WEEKEND_END 17 Y NUMBER 无
AMBER_WEEKDAY_START 18 Y NUMBER 无
AMBER_WEEKDAY_END 19 Y NUMBER 无
AMBER_WEEKEND_START 20 Y NUMBER 无
AMBER_WEEKEND_END 21 Y NUMBER 无
GREEN_WEEKDAY_START 22 Y NUMBER 无
GREEN_WEEKDAY_END 23 Y NUMBER 无
GREEN_WEEKEND_START 24 Y NUMBER 无
GREEN_WEEKEND_END 25 Y NUMBER 无
但是,这有几个问题:(
- 根本不处理银行假日)
- 每种颜色只允许一个时间段(例如绿色在工作日被分开)
那么什么是更好的方法去存储这种数据?
I have to store the following information into a database, to be used by a .NET assembly. They are representing times that a certain color is active:
RED: 16:30 - 18:30 Mon to Fri Incl Bank Holidays
AMBER: 09:00 - 16:30 & 18:30 - 20:30 Mon to Fri incl Bank Holidays &
16:30 - 18:30 Sat & Sun
GREEN: 00:00 - 09:00 & 20:30 -
24:00 Mon to Fri incl Bank Holidays & 00:00 - 16:30 * 18:30 - 24:00
Sat & Sun
I've initially set off with a database schema like so:
Column Name ID Pk Null? Data Type Default Histogram Encryption
Alg SaltRED_WEEKDAY_START 14 Y NUMBER None
RED_WEEKDAY_END 15 Y NUMBER None
RED_WEEKEND_START 16 Y NUMBER None
RED_WEEKEND_END 17 Y NUMBER None
AMBER_WEEKDAY_START 18 Y NUMBER None
AMBER_WEEKDAY_END 19 Y NUMBER None
AMBER_WEEKEND_START 20 Y NUMBER None
AMBER_WEEKEND_END 21 Y NUMBER None
GREEN_WEEKDAY_START 22 Y NUMBER None
GREEN_WEEKDAY_END 23 Y NUMBER None
GREEN_WEEKEND_START 24 Y NUMBER None
GREEN_WEEKEND_END 25 Y NUMBER None
However a couple of problems with this:
- Doesn't deal with bank holidays (at all)
- Only allows one period of time for each colour (for example green being split up on weekdays)
So what would be a better way to go about storing this kind of data?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
五栏
(红色:周一至周五 16:30 - 18:30,包括银行假日)转换为
琥珀色:09:00 - 16:30 和周一至周五 18:30 - 20:30,包括银行假日和工作日周六和周日 16:30 - 18:30 Sun 翻译为
“我将把第三行留作练习!”
如果您确实想节省空间,请随意标准化日期和颜色。银行假日问题需要另一个银行假日表,您可以在使用的任何查询中加入该表:
PSEUDO SQL
Five Columns
(RED: 16:30 - 18:30 Mon to Fri Incl Bank Holidays) translates to
AMBER: 09:00 - 16:30 & 18:30 - 20:30 Mon to Fri incl Bank Holidays & 16:30 - 18:30 Sat & Sun translates to
And I'll leave the third line as an exercise!
Feel free to normalise dates and colours if you really want to save on space. The Bank holiday question requires another table of bank holidays which you can join to in any query you use:
PSEUDO SQL
您必须为每个条目创建一个表和第二个表。将会有一对多的关系。您在第二个表上使用外键。插入主条目,获取其主键,并为每个键创建该键的多行。一对多的关系。你必须彻底打破它。这里的key是数据库生成的主键和外键。
You have to create a table and a second table for each entry. There will be one to many relationship. You use the foreign key on the second table. Insert the main entry, get its primary key and for each key create the multiple rows for that key. One to many relationship. You have to break it down completely. Key here is primary key and foreign key generated by the databse.
我会把这个正常化一点。首先,我有一个标识“颜色”的表格:
然后是一个包含适用的开始/结束时间的表格:
这将使您能够添加多种颜色,然后将多个跨度应用于每个颜色颜色。它还允许您将特定的时间段标记为假期时间段,如果您愿意,您可以添加不同的布尔值来跟踪周末时间段。
I would normalize this a little bit. First I'd have a table identifying the "colors":
Then follow it up with a table containing the start/end times that are applicable:
This would give you the ability to have multiple colors added, and then have multiple spans applied to each color. It would also allow you to mark a specific span as a holiday span, and if you wanted you could add a different boolean to track a weekend span.