当前位置: 首页 > 面试题库 >

营业时间数据库设计

严承允
2023-03-14
问题内容

我们目前正在开发一个应用程序,其中多个实体具有关联的营业时间。营业时间可能会持续数天,也可能会在一天内。

前任。星期一在6:00开放,星期五在18:00关闭。

或者

星期一在06:00开放,星期一在15:00关闭。

同样,一个实体每天可能有多组开放时间。到目前为止,我发现最好的设计是定义一个开放时间,其中包括以下内容:

StartDay,StartTime,EndDay和EndTime。

这种设计提供了所有所需的灵活性。但是,数据完整性成为一个问题。我似乎找不到解决方案来禁止跨度重叠(在数据库中)。

请分享您的想法。

编辑:数据库是Microsoft SQL Server 2008 R2


问题答案:

假设一个健壮的触发框架

在插入/更新时,您将检查新的开始或结束日期是否在任何现有范围内。如果是这样,那么您将回滚更改。

CREATE TRIGGER [dbo].[mytable_iutrig] on [mytable] FOR INSERT, UPDATE AS

IF (SELECT COUNT(*)
FROM inserted, mytable
WHERE (inserted.startdate < mytable.enddate 
          AND inserted.startdate > mytable.startdate)
      OR (inserted.enddate < mytable.enddate 
          AND inserted.enddate > mytable.startdate)) > 0 
BEGIN
    RAISERROR --error number
    ROLLBACK TRANSACTION
END


 类似资料:
  • 问题内容: 在我的商店数据库中,我需要有营业时间。您是否知道如何在dB中实现这一点? 营业时间为周一至周日,每天可以有2个开放窗口(例如09:00-12:00、16:00-19:00) 问题答案: 建一个表,把它添加一个外键表的主键,一个场,。数据应如下所示: 这将使您有机会构建任何类型的日程表,并根据需要设置任意数量的窗口以及所需的异常数量。它是通用的,仅限于期望所有星期都相同的事实。没有考虑假

  • 本文向大家介绍数据仓库和运营数据库之间的区别,包括了数据仓库和运营数据库之间的区别的使用技巧和注意事项,需要的朋友参考一下 数据仓库是用于结构化,经过过滤的数据的存储库,该数据已针对特定目的进行了处理。数据软件从多个来源收集数据,并使用ETL流程转换数据,然后将其加载到数据仓库中以用于业务目的。 运营数据库是那些数据经常更改的数据库。它们主要设计用于大量数据交易。它们是数据仓库的源数据库,用于维护

  • 问题内容: 我想设计一个数据库,描述如下:每个产品在一个时间点只有一个状态。但是,产品的状态可能会在其生命周期内发生变化。如何设计产品和状态之间的关系,以便在当前时间轻松查询所有具有特定状态的产品?另外,有人可以给我一些与设计时间有关的设计数据库的详细信息吗?谢谢你的帮助 问题答案: 这是一个满足您指定要求的模型。 链接到时间序列数据模型 对于不熟悉关系建模标准的人,请 链接到IDEF1X符号 。

  • 问题内容: 几天内绘制图表,其数据集具有24小时数据,但仅在MF(上午7点至下午5点)期间有效。如果使用下面的代码设置时间序列,则会得到一个包含每周7天,每天24小时的图表。有道理,但不适用于我的用例。 有没有一种方法可以定义时间序列显示的间隔?还是我需要使用其他图表类型并尝试将我的数据调整为常规周期?我希望不要这样,尽管我接收的数据通常间隔30秒,但很容易会有差距。 几乎不可能发布具有正常工作状

  • 我有一个现有的Android项目,在其中我创建了一个新的(offlineservicelibrary)(文件/new/new module/Android library)。在这个库中,我想创建一个房间数据库。 我遵循https://developer.android.com/training/data-storage/room并为我的数据库创建了Entity(OfflineData)和DAO(O

  • 问题内容: 在我的SQL Server 2000数据库中,我有一个名为(设置为默认值/绑定)类型的时间戳记(功能不在数据类型中)。 我正在使用Netbeans 6.5生成的JPA实体类,并将其包含在我的代码中 但是,当我尝试将对象放入数据库时​​, 我曾尝试将to 设置为,但这引发了一个异常,说数据库不允许该列的值,而这是设计不允许的。 我以前使它在纯Hibernate中工作,但此后我切换到JPA