Lew*_*nci 5 sql database sql-server database-design
所以,我已经阅读了很多关于如何将多个值存入一列是一个坏主意并违反数据规范化的第一条规则(令人惊讶的是,它不是"不要谈论数据规范化")所以我需要一些帮助.
目前我正在为我工作的地方设计ASP .NET网页.我想在网页上显示数据,具体取决于该人所属的Active Directory组.我想到的第一种方法是创建一个表,其中包含一个包含AD组的列,第二列包含属于该列表的计算机列表.
我已经了解到这显然忽略了关系数据库,那么更好的方法是什么呢?我想通过SQL表来控制这种访问,因此我可以在这些表中添加/删除并相应地更改最终用户访问权限.
谢谢您的帮助!:)
编辑:准确描述我想要做的是:
我们有一组需要检查的计算机,但这些计算机在物理上很难到达.我所属的组织为这些计算机启用了远程控制,但是他们不是在提供远程控制密码(可理解).
增加的复杂性是,根据您的身份,我们的客户应该只能看到某组计算机(即他们所在地区拥有的计算机组).所以,如果A组中有Thomas,而B组中有Jones,那么如果你属于任何一个组,那么你只会看到一个条目.但是,如果你属于这两个群体,你应该看到两个在它托马斯和琼斯的电脑.
我认为将这些数据存储在SQL单元中的原因是,将它们存储在表中需要(在我看来)为每个新的"组"计算机创建一个新表.我不想为每个新组创建SQL表,我更倾向于在某个SQL表中添加一行.
这有意义吗?
您在SQL Server中基本上有三个选项:
(其他数据库有其他选项,例如数组,嵌套表和JSON.)
几乎在所有情况下,使用联结表都是正确的方法.为什么?以下是一些原因:
虽然分隔列表几乎不是正确的解决方案,但可以考虑它可能有用的情况:
在某些情况下,XML也是一个合理的选择.在最新版本的SQL Server中,这可以非常高效.但是,它会导致读取和解析XML的开销 - 而重复消除等问题仍然不明显.
所以,你有选择权.几乎在所有情况下,联结表都是正确的方法.
| 归档时间: |
|
| 查看次数: |
3253 次 |
| 最近记录: |