帮助数据库规范化的工具或网站[关闭]

Posted

技术标签:

【中文标题】帮助数据库规范化的工具或网站[关闭]【英文标题】:tools or a website to help with database normalization [closed] 【发布时间】:2011-01-15 03:03:43 【问题描述】:

是否有任何工具或在线资源(FREX 教程)可以帮助新手进行数据库规范化?

【问题讨论】:

标准化不需要工具。 @The Machine Charmer:因为作为数据库设计者,您应该了解您在域中建模的内容。 *** 怎么样?我听说那边的人非常支持。 “不需要工具”很好。但是,假设您继承了一个系统,仅在一个表上就有超过 500 列,并且您想做一些自动分析 【参考方案1】:

An Introduction to Database Normalization

维基:Database normalization

Database Normalization Tips

实现设计良好的数据库 在关系数据库设计理论中, 规范化规则识别某些 必须存在的属性或 在精心设计的数据库中不存在。 有几条规则 可以帮助您实现完善的数据库 设计:

表应该有一个标识符。数据库的基本规则 设计理论是每张桌子 应该有一个唯一的行标识符,a 列或一组列用于 将任何单个记录与 表中的所有其他记录。每个 表应该有一个 ID 列,并且没有 两条记录可以共享同一个ID 价值。服务的列 作为 a 的唯一行标识符 表是主键 桌子。在 AdventureWorks 数据库中, 每个表都包含一个标识列 作为主键列。为了 例如,VendorID 是主键 Purchasing.Vendor 表。

表应仅存储单一类型实体的数据。尝试去 在表中存储太多信息 会阻碍高效可靠 表中数据的管理。 在 AdventureWorks 示例数据库中, 销售订单和客户 信息存储在单独的 表。虽然你可以有列 包含两个信息 销售订单和客户 单表,这种设计导致 几个问题。客户 信息、姓名和地址,必须是 为每个冗余添加和存储 销售订单。这使用了额外的 数据库中的存储空间。如果一个 客户地址变更,变更 必须为每个销售订单制作。 此外,如果最后一个销售订单的 客户被从 Sales.SalesOrderHeader 表中, 该客户的信息丢失。

表应该[尽量]避免可以为空的列。表可以有列 定义为允许空值。一种 null 值表示没有 价值。虽然它可能有用 允许孤立的空值 情况下,您应该谨慎使用它们。 这是因为他们需要特殊的 处理增加了复杂性 的数据操作。如果你有一个 具有多个可为空列的表 并且有几行有 null 列中的值,您应该 考虑将这些列放入 另一个表链接到主表 桌子。通过将数据存储在两个 单独的表,主表可以 设计简单,仍然可以处理 偶尔需要存储这个 信息。

表格不应有重复的值或列。一张桌子 数据库中的项目不应该 包含 a 的值列表 具体信息。为了 例如,在 AdventureWorks 数据库可能是 从多个供应商处购买。如果 有一个列 名称的 Production.Product 表 供应商,这会产生问题。 一种解决方案是存储名称 列中的所有供应商。然而, 这使得显示列表变得困难 的个别供应商。其他 解决方法是改变结构 要为其添加另一列的表 第二个供应商的名称。 但是,这仅允许两个 供应商。此外,另一列 如果一本书有三个,则必须添加 供应商。如果你发现你必须 将值列表存储在单个中 列,或者如果您有多个 单个数据的列, 例如电话号码1,和 TelephoneNumber2,你应该考虑 将重复的数据放在另一个 带有返回主节点的链接的表 桌子。 AdventureWorks 数据库有 产品的 Production.Product 表 信息,一个 Purchasing.Vendor 表 供应商信息,以及第三个 表,Purchasing.ProductVendor。这 第三个表只存储 ID 值 对于产品和 ID 产品的供应商。这种设计 允许任意数量的供应商 产品无需修改 表的定义,并且没有 分配未使用的存储空间 单一供应商的产品。

Ref.

【讨论】:

【参考方案2】:

您“不应该”使用工具的想法只是轻率的意识形态。数学家使用计算器,尽管他们可以自己完成所有计算。 NORMA 很好,我会从那个开始。

【讨论】:

【参考方案3】:

我使用NORMA 进行概念数据库设计。一个副作用是它会为正确规范化的数据库生成架构。

【讨论】:

+1 ... 用简单的英语捕捉关系、基数等,非技术人员也能理解。 我想没有与 Open Office 兼容的版本? @aslum:以什么方式兼容? NORMA 是一个 Visual Studio 扩展。 SourceForge 上提供了源代码 - 如果您想要一些特殊的输出格式,您可以自定义它。特别是,如果 Open Office 使用 XML 格式,我知道输出是由 XSLT 驱动的。【参考方案4】:

最好的解决方案是,您应该能够完全理解如何规范化表单,在多长时间内您将依赖任何工具来为您做到这一点?我建议您发送至 study a bit about it,以便您自己提出最佳解决方案。作为一个开发者,你会时不时地面临这个问题,那么面试呢,让我们假设你在哪里被问到它?正如 Mitch Wheat 所说,标准化不需要工具:)

这里还有一些资源可以让你关注:

http://dev.mysql.com/tech-resources/articles/intro-to-normalization.html

来源:Mysql网站(官方)

【讨论】:

【参考方案5】:

作为初学者,我使用了Relational Database Design

相信我,它很棒! (因为它可以工作并且不需要任何先决条件,即非常适合初学者)。第 4 页介绍了规范化。

【讨论】:

【参考方案6】:

1:不要听那些告诉你规范化不需要工具的人,因为任何发表这种评论的人都不理解问题。

2:“范式”最好被视为衡量数据库设计质量的标准。例如,较高范式的数据模式具有较少的数据冗余并且不易受到更新异常的影响——这意味着您的应用程序需要较少的程序代码。

3:那么,如果标准化是必不可少的,那么最好的方法是什么?

这方面有很多说法,所以我只提两个:

方法一:功能分解(FD) 现在至少有一位著名的大学教授教授FD方法。观看此视频:“Stanford University Video on functional decomposition”。 不幸的是,(对不起,詹妮弗),但功能分解非常复杂,容易出错,在我看来,完全不可行。 (例如,你如何首先找出正确的“Mega”关系?)

方法二:使用 NORMA 工具自动生成第五范式模式。 NORMA 工具是免费的,它在 Visual Studio 2013 的免费版本上运行。 你可以在my website.了解更多信息

快乐建模。

PS 我使用对象-角色建模方法已有 20 多年了。

【讨论】:

【参考方案7】:

我见过的最好的教程是 Art Langer 的逻辑数据建模。 另外,Art Langer 博士随附的 pdf:http://dualibra.com/wp-content/uploads/2011/09/Analysis_and_Design_of_Information_Systems__Third_Edition.pdf

http://www.youtube.com/watch?v=IiVq8M5DBkk&list=PL196FE5448948D9B4

【讨论】:

以上是关于帮助数据库规范化的工具或网站[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

在高流量网站中进行规范化或非规范化

构建Android UI的简单方法? [关闭]

Web UI 网站用户界面设计命名规范

如何从雅虎财经这样的网站获取数据? [关闭]

6.有学生提到,在大学选课的时候,可以写一个“刷课机”的程序,利用学校选课系统的弱点或漏洞,帮助某些人选到某些课程。或者帮助用户刷购票网站,先买到火车票。这些软件合法么?符合道德规范么?是在“软件工程

何时在机器学习中执行规范化或标准化? [关闭]