【发布时间】:2010-01-14 21:25:11
【问题描述】:
我必须创建一个表并存储代表 用户 或 组 的 Active Directory SID。
您如何命名代表用户和组的类别?
编辑 1。
表将包含四列:ID (PK)、SID 的名称、SID 的值和另一列 SID 的类型(0 表示用户,1 表示组)。
请建议表名,而不仅仅是列名。
【问题讨论】:
我必须创建一个表并存储代表 用户 或 组 的 Active Directory SID。
您如何命名代表用户和组的类别?
编辑 1。
表将包含四列:ID (PK)、SID 的名称、SID 的值和另一列 SID 的类型(0 表示用户,1 表示组)。
请建议表名,而不仅仅是列名。
【问题讨论】:
Active Directory 对两者都使用术语“主体”或“安全主体”。这也包括计算机。
这是来自 MSDN 文章 Managing Directory Security Principals in the .NET Framework 3.5 的图形图像,显示了层次结构。
(来源:microsoft.com)
所以我可能会打电话给我的桌子Principals 并拥有你提到的三列:
【讨论】:
Principal ( ID, Name, SID, TypeID ) 和PrincipalType ( ID, Description ) 表,下面的查询似乎很自然:SELECT Principal.Name, Principal.SID, PrincipalType.Description FROM Principal INNER JOIN PrincipalType ON PrincipalType.ID = Principal.TypeID
从最详细到最不详细:
良好的做法要求表名是复数形式,并且名称应该代表和描述表的内容。根据您的舒适程度,以上任何一项都可以。
【讨论】:
当我最近不得不这样做(将数据库用户表链接到 AD 帐户)时,我只是将列命名为 ADSID。
我发现这对我们来说很有意义,因为我们使用 DirectorySearcher 进行查询,并且 LDAP 数据库中该属性的名称是 objectSid,所以我们的查询看起来像:
deSearch.Filter = "(&(objectSid=" + ADSID + "))";
虽然,当我从我的项目中粘贴该代码时,我想知道 objectSid 是否也是一个好的列名?
至于命名表,我希望您在此处存储除了 AD 详细信息之外的其他信息?否则,为什么要复制 AD 数据库?
如果您要存储附加信息,那么您应该根据该表所建模的任何域/业务对象来命名该表。
正如我所说,我正在为用户存储数据,所以我的表简称为 [Users]。
最后 - 也许您会从将其规范化为 [Groups] 和 [Users] 表中受益?
【讨论】: