定义单独的表或将它们连接到一个表中并具有空值

时间:2013-06-26 14:08:53

标签: database-design relational-database

我想管理((Permision_Role ... Group .. users)之间的关系。并且permission_role可以与单个用户或一组用户或两者相关联。

**我有两种管理方法。

要么有三个表而不必处理空值: -

enter image description here

或者有两个表并允许空值: -

enter image description here

那么我应该遵循哪种方法?为什么?

1 个答案:

答案 0 :(得分:1)

标准化,你应该为每一列都有一个值。由于NULL不是值,因此您应该尽力避免它。

然而,在你的情况下,这是有争议的。正如您所指出的,权限可以链接到组,用户,两者都没有,在语义上不正确。 NULL适合这些列:要么你拥有它,要么你没有。因此,通过非规范化来避免连接及其开销对我来说似乎并不合理。

现在如果PermissionRoleDetails不是一个巨大的表,第一个选项可能更合适。你的电话。