2012-01-30 27 views
1

方案。什么是排除数据库模型中某些数据子集的最佳设计实践

我在数据库中有一个库架子,库,用户,应用程序表。一个图书馆书架可以有许多图书馆文件。我想在每个应用程序下将这些文件关联到用户。我可以让用户在一个应用程序中使用UserXLibraryShelf表访问库文件。让我们说,而不是说什么货架可供用户,我想说哪些货架将不可用。大多数情况下,用户可以访问除应用程序3和5以外的所有应用程序。我可以通过使用UserXNotAvailableShelf来完成此操作。但是这样就像查找表一样工作,我不得不说这个用户的NotAvailable表中不存在所有的架子。

在数据库设计中处理异常情况(排除而不是包含)的最佳做法是什么?

+1

我不确定查找表方法有什么问题... – FrustratedWithFormsDesigner 2012-01-30 22:11:56

+0

当有大量记录时速度足够吗?我将不得不说,得到的架子不在查找表中的文件。 – 2012-01-30 22:34:14

+0

有多少是“很多”?在这个系统中你期望得到多少数据?您是否可以使用生成的数据设置一些简单测试,以查看您的查询如何执行大量数据和适当调整的标记? – FrustratedWithFormsDesigner 2012-01-30 22:37:08

回答

2

这是一个完全可以接受的设计选择,它具有'可用'和'不可用'的(基本)表格,确保每个书架/用户之间的对应关系恰好进入其中一个表格。但是,在更新密集型环境中,这样的设计可能存在实际问题。附:你有没有考虑过创建用户组,然后与这些组进行相应的搁置?

+0

是的,这将是每个用户组。有点像,对于这个团队来说,这些架子根据我的决定可用或不可用。它的一个或另一个,因为货架的主列表是相同的。所以我需要存储不可用或可用。不可用的是缩短数据存储时间,但可用速度更快且直接。有人必须记得一直检查不可用。这是正常流程的例外。 – 2012-01-31 15:34:44

0

这通常是使用MS-SQL中的角色完成的。例如,您创建了VIEW或PROCEDURE,排除某些货架值并将其分配给一个角色,并且VIEW/PROC包含所有货架并将其分配给另一个角色。用户然后被分配到适当的角色。

相关问题