2.sql server标准化必须要做什么?
说实话,答案是没有。sql server,与其他的关系型数据库管理系统一样,毫不关心你的数据模型是否遵循任何一个范式。你可以创建一个表,所有数据都存储在一个表里面,或者你也可以创建许多个小的,没有关系的表来存储数据。sql server支持你决定做的任何事情。你可能遇到的惟一的一个限制因素就是sql server在一个表内支持的最大列数。
sql server没有强迫或者加强任何你以任何一种范式创建数据库方面的规则。你可以混和并匹配你需要的任何规则,但是尽可能地在你设计数据库的时候就将其标准是一个好主意。人们倾向于花费大量时间创建一个标准化的数据模型,但是一旦需要添加新的列或者表的时候,他们就会忘记最初在努力创建一个优美的干净的模型方面所做的努力。
为了辅助数据模型的设计,你可以使用sql server企业管理器中自带的davinci 工具。
标准化优点:
1、 更小的数据库:消除了重复的数据之后,你可以缩减数据库的整体规模。
2、 更好的性能。
a、 缩小的表:拥有更加调整良好的表可以让你的表拥有较少的列,并且在每个数据页中装载更多的记录。
b、 每个表拥有更少的索引意味着更快的维护任务,例如索引的重建。
c、 只在需要的时候进行表连接。
标准化的缺点:
1、 需要连接的表更多:通过将你的数据散布到更多的表中,增加了连接表的需求。
2、 表中包含更多的代码,而不是数据:重复的数据以代码的形式存储,而不是有意义的数据。因此,总是需要查看表中的数值。
3、 数据模型查询困难:数据模型为了应用程序而进行优化,而不是为了特别的查询。
总结
你的数据模型设计同样是艺术的和科学的。最好地平衡两者以支持将要使用数据库的应用程序,并且以有效的和结构化的方式存储数据。对于基于事务的系统,高度标准化的数据库设计是必经之路;它确保了整个数据库中数据的一致性,并且能很好的运行。对于基于报告的系统,标准化程度较低的数据库通常是最好的方式。你可以消除连接许多个表的需求,并且查询也更快了。另外,数据库对于特别的报告需求也会用户友好得多。
sql server用户安全清单
作为数据库管理员,安全一般来说不是最基本的问题。连通性和可用性是更直接一些的关注点,但是如果你不想让你的安全管理员对你大发雷霆,那么安全就应该添加到考虑范围之内。下面是searchsecurity.com 的编辑mike chapple 推荐给安全管理员锁定sql server时使用的清单;它同样也可以被数据库管理员纳入考虑范围。
以下是你今天就可以执行的4个动作,能够帮助你确保sql server安全:
◆ 限制数据库管理员的数量。这是一个常识性的规则,但是经常被违反。确保只有需要管理权力(并且知道怎么去使用这个权力!)的一个人具有数据库管理员权限。sql server与windows的紧密耦合使得数据库管理员权力被想当然地释放给所有的域管理员。这是一个严重的错误。
◆ 应用最小权限规则。确保具有管理权限(和用户级别访问权限,实际上)只拥有最小的必要的权限子集来执行他们的工作任务。
◆ 避免将密码硬编码,这就像一场灾难。数据库开发人员喜欢在他们的程序中将密码硬编码,因为这种方式非常简单。不要让他们那么做!使用sql server的集成认证模式来约束windows的安全,或者强迫用户自己到数据库上去认证。如果你听到了下面这句话,“我们没法改变密码或者xyz被破解了,”那么你可以认为自己看到了一面大红旗在面前飘荡!
◆ 利用角色。sql server提供了一些预先定义的用户角色,它们具有一些特定的管理权限。你还可以为你的特定环境需求创建定制的角色。在你的数据库上分配权限给这些角色,然后根据人们工作职责的变化从这些角色中添加和删除用户/群。这有利于非常严格的安全环境,并且允许你对访问权限控制的记录。