表格布局问题(数据库设计)

时间:2010-03-04 12:13:26

标签: database-design

我的数据库设计几乎是完美的,但有一个问题:

http://i306.photobucket.com/albums/nn269/MCTWEED15/newDatabase.jpg

如您所见 - 书的副本需要一个位置。但是要求说

  

如果是短期贷款那么这本书   不会在货架/行上找到。   这意味着,具有当前的结构   我将为Row和具有NULL值   如果ShortLoan为真,那么货架

如何更改设计以防止这种情况发生?

感谢

1 个答案:

答案 0 :(得分:0)

我认为ShortLoan应该是BookCopy(或者甚至是Book)的属性而不是Location。这意味着BookCopy上的LocationID是可选的。设计一个没有NULL列的数据模型非常困难。

修改

“okay-ness”在数据模型方面很难衡量,当我们不了解业务需求时更是如此。我不明白ShortLoan旗下的规则,所以我不能真的建议你。但在我看来,一个获得热门书籍(新哈利波特)的图书馆可能会标记几份ShortLoan,以便更多借款人有机会阅读它,但不是所有副本,以便给慢读者足够的时间来完成它。

另一个问题是:如果ShortLoan标志的设置确定是否可以设置BookCopy.LocationID标志,那么如果该标志位于该表上则更好,因为这种安排允许我们强制执行检查约束当列位于两个单独的表上时,我们无法做到。物理方面的考虑不应该驱动逻辑数据模型,但是一旦我们开始考虑表而不是实体,它们就会应用。

编辑2

我认为ShortLoan意味着该书只能在一段时间内借出(例如三天而不是标准三周),而贷款则是实际交易。所以在我的理解中,BookCopy.ShortLoan标志将确定Loan.ReturnDate,但它本身不是Loan的属性。

这就是为什么大多数数据建模项目通常会围绕白板进行激烈的讨论!