我需要帮助设计我的模式。我在这方面几乎是新手,我不确定下面的表ROOM、GUEST和RESERVATION之间的关系是否正确。
此外,我也很难弄清楚如何处理房间变更的可能性:举个例子:
迈克尔·基顿预订了两个房间。第一次,他不喜欢这个房间,所以旅馆把他搬到了另一个房间,第二次在同一个房间里有水管问题,所以他们又把他搬走了。我的数据库需要记录每一个房间的变化。
以下是实体关系图:

发布于 2015-11-09 20:13:02
听起来,您需要一个历史表来进行房间更改,这些更改最有可能是通过应用程序层进行的。我知道使用内置触发器来记录它是很有诱惑力的,但是一个简单的应用程序层应该能做到这一点。
如果您真的很关心这个问题,并且您可以使用CDC选项,那么可以随意使用它,但是我会使用一个事务,它记录当前记录到其他地方,更新它,如果它失败了就用回滚错误处理提交,并且在查看此错误时,最终用户可以为客户采取其他一些步骤。
编辑:基于问题的更新。为此,您可以编写从应用程序调用的存储过程,其中:
-begins事务
-copies当前酒店号码和居住者id以及时间戳到“getRoomChangeHistory”类型的存储过程
-then发出一个“updateRoomChange”类型的存储过程,以便更新新值
-Finally提交事务。添加对失败的错误处理。如果你想要一种可靠的可审计的方式来做这件事,这就是它。如果你想轻松一点,那就不可靠了。因此,如果您不关心ACID的遵从性,为什么不把它保存在其他地方的文档存储中呢?
下面是关于SQL2012及更高版本的更多信息,通过使用TRY从图书OnLine实现这一点:https://msdn.microsoft.com/en-us/library/ms175976.aspx
https://dba.stackexchange.com/questions/120539
复制相似问题