Questions tagged «database-normalization»

10
将分隔列表存储在数据库列中真的不好吗?
想象一个带有一组复选框的Web表单(可以选择任何一个或全部)。我选择将它们保存在数据库表的一列中以逗号分隔的值列表中。 现在,我知道正确的解决方案是创建第二个表并正确规范化数据库。实施简单的解决方案的速度更快,我想快速对该应用程序进行概念验证,而不必花费太多时间。 我认为节省时间和简化代码在我的情况下是值得的,这是一个合理的设计选择,还是我应该从一开始就对其进行标准化? 在更多情况下,这是一个小型内部应用程序,实际上替代了存储在共享文件夹中的Excel文件。我也在问,因为我正在考虑清理程序并使其更易于维护。我有些不满意,有些是这个问题的主题。

4
什么是数据库范式,您可以举一些例子吗?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意测验或进一步的讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 在关系数据库设计中,存在数据库规范化或简单规范化的概念,该概念是组织列(属性)和表(关系)以减少数据冗余并提高数据完整性的过程。(如Wikipedia所写)。 由于大多数文章都是技术性文章,因此较难理解,我要求有人根据有关1NF,2NF,3NF甚至3.5NF(Boyce-Codd)含义的示例,写一个更容易理解的解释。

11
初次数据库设计:我是否过度设计?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引文回答。 2年前关闭。 改善这个问题 背景 我是CS大学一年级的学生,我做兼职工作是我父亲的小生意。我没有在现实世界中进行应用程序开发的经验。我用Python编写了脚本,用C编写了一些课程,但没有这样的东西。 我父亲的培训业务不多,目前所有课程都通过外部网络应用程序进行计划,记录和跟进。有导出/“报告”功能,但是它非常通用,我们需要特定的报告。我们无权访问实际数据库来运行查询。我被要求设置一个自定义报告系统。 我的想法是创建通用的CSV导出,并将其导入(可能是使用Python)(每天晚上)到办公室中托管的MySQL数据库中,从那里我可以运行所需的特定查询。我没有数据库方面的经验,但了解非常基础的知识。我已经阅读了一些有关数据库创建和常规表单的信息。 我们可能很快就会有国际客户,因此如果发生这种情况,我希望数据库不会爆炸。我们目前也有几个大公司作为客户,分别设有不同的部门(例如ACME母公司,ACME医疗保健部门,ACME身体护理部门) 我提出的架构如下: 从客户的角度来看: 客户是主表 客户链接到他们工作的部门 部门可以分散在一个国家/地区:伦敦的HR,斯旺西的市场营销等。 部门与公司的部门联系在一起 部门链接到母公司 从类的角度来看: 会话是主表 老师链接到每个会话 每个会话均会获得一个statusid。例如0-已完成,1-已取消 会话被分组为任意大小的“包” 每个包装都分配给一个客户 我在一张纸上“设计”(更像是乱涂乱画)该架构,试图使其标准化为第三种形式。然后我把电源插头插上到MySQL Workbench和它使人们都非常适合我:(点击查看全尺寸图片) (来源:maian.org) 我将要运行的示例查询 哪些客户的信用额仍处于闲置状态(将来未安排课程的客户) 每个客户/部门/部门的出勤率是多少(由每个会话中的状态ID衡量) 一个月一个老师上了几节课 标记出勤率低的客户 针对人力资源部门的自定义报告以及部门人员的出勤率 问题 这是工程过度还是我朝着正确的方向前进? 对于大多数查询,需要联接多个表是否会对性能造成重大影响? 我已经向客户端添加了一个“ lastsession”列,因为它可能将是一个常见的查询。这是个好主意还是应该严格规范化数据库? 谢谢你的时间


6
3NF和BCNF的简单区别(必须能够向8岁儿童解释)
我已经读过这句话: 数据取决于键[1NF],整个键[2NF],而仅取决于键[3NF]。 但是,我很难理解所谓的3.5NF或BCNF。这是我的理解: BCNF比3NF严格 表格中任何FD的左侧必须是超级键(或至少是候选键) 那么,为什么有些3NF表不在BCNF中?我的意思是,3NF引号明确表示“除了密钥”,这意味着所有属性仅取决于主键。毕竟,主键是候选键,直到被选为我们的主键为止。 到目前为止,如果对我的理解有任何不妥之处,请纠正我,并感谢您能提供的任何帮助。

13
Facebook数据库设计?
我一直想知道Facebook如何设计朋友<->用户关系。 我认为用户表是这样的: user_email PK user_id PK password 我用用户的数据(性别,年龄等假设通过用户电子邮件连接的表)来计算表格。 如何将所有朋友连接到该用户? 像这样吗 user_id friend_id_1 friend_id_2 friend_id_3 friend_id_N 可能不是。因为用户数未知,并且会扩大。

4
MYSQL 5.7中的本机JSON支持:MYSQL中JSON数据类型的优缺点是什么?
在MySQL 5.7中,添加了用于在JSON表中存储JSON数据的新数据类型。显然,这将是MySQL的巨大变化。他们列出了一些好处 文档验证 -JSON列中只能存储有效的JSON文档,因此您可以自动验证数据。 有效访问 -更重要的是,当您将JSON文档存储在JSON列中时,它不会存储为纯文本值。相反,它以优化的二进制格式存储,从而可以更快地访问对象成员和数组元素。 性能 -通过在JSON列中的值上创建索引来提高查询性能。这可以通过虚拟列上的“功能索引”来实现。 便利性 -JSON列的附加内联语法使在SQL中集成文档查询变得非常自然。例如(features.feature是一个JSON列):SELECT feature->"$.properties.STREET" AS property_street FROM features WHERE id = 121254; 哇 !它们包括一些很棒的功能。现在,更容易操作数据。现在可以在列中存储更复杂的数据。因此,MySQL现在具有NoSQL的味道。 现在我可以想象对JSON数据的查询类似 SELECT * FROM t1 WHERE JSON_EXTRACT(data,"$.series") IN ( SELECT JSON_EXTRACT(data,"$.inverted") FROM t1 | {"series": 3, "inverted": 8} WHERE JSON_EXTRACT(data,"$.inverted")<4 ); 那我可以在几个json列中存储巨大的小关系吗?好吗?它破坏规范化了吗?如果可能的话,我想它将像MySQL列中的NoSQL一样。我真的很想了解更多有关此功能的信息。MySQL JSON数据类型的优缺点。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.