有关以下情况下最佳数据库设计实践的问题:
我有一个用户表,其中存储部门用户所属的密码(例如密码)等信息,电子邮件为e.t.c。我还必须创建另一个表来存储用户访问信息。我的用户具有以下访问权限:
基本上,对于这些类别,用户可以具有不同访问权限的任意组合。
我在此表中的思维方式是,为每种访问类型创建3列,并以xml的形式存储每个类别,否则我必须为每种类别(t_user_Lob,t_user_role,t_user_company)创建3个不同的表。 / p>
什么是最好的方法?
我还考虑过将它们作为csv值存储在每一列中,但我听说这违反了关系规范化规则。
我也喜欢json方式来存储数据,但是我使用的是sql server 2012,因此在2012年解析/比较json列中的值很麻烦。
谢谢
答案 0 :(得分:0)
我会将它们存储在三个单独的表中。
您不清楚需要什么关系,但是基本上您使用三个表来创建多对多关系。
tuple
答案 1 :(得分:0)
假设组合函数并不奇怪,我将创建一个表,将其称为user_access,其中包含角色和公司的每种组合,并为每一行赋予唯一的值。然后创建第三个表,将其称为具有用户ID和关联的user_access值的user_access_people。因此,user_access_people将在user_id和user_access_Id之间建立多对多关系。必要时,每个user_ID会有多行。
然后,您可以联接这些表以从正在寻找的user_access列中检查任何值。