Questions tagged «database-design»

有关在数据库中构造数据的问题。如何布置表格,是否使用关系数据库,等等。

3
数据库中的专有弧是什么?为什么它是邪恶的?
我正在阅读开发人员对Stackoverflow进行问答时最常见的数据库设计错误。最初的答案是关于专有弧的短语: 如果用两个或多个外键创建一个表,并且其中一个只能为非空,则独占弧是一个常见错误。大错。一方面,维护数据完整性变得更加困难。毕竟,即使具有参照完整性,也无法阻止设置两个或多个这些外键(尽管有复杂的检查约束)。 我真的不明白为什么排斥弧是邪恶的。可能我不了解它的基本知识。排他弧线有什么好的解释吗?

2
首选数据库规范化还是架构透明性?
新的要求出现在旧的代码库上,该代码库基本上实现了两个以前不直接相关的用户类之间的直接(内部)通信(存储在具有完全不同模式的不同表中,并且可悲的是,该代码几乎不面向对象)设计较少,因此没有父类)。由于我们不愿使用这种从未考虑过此功能的旧设置,因此无法保证不存在PK冲突-在使用数据集的情况下,实际上可以保证存在ARE。 因此,解决方案似乎很明显:用火杀死它并重写整个混乱的 A映射表。我已经为实现地图的可能方法提供了两个指导,但是我不是DBA,所以我不确定是否有我遗漏的利弊。 为了阐明抽象,请考虑三组不同的用户数据:教授,行政管理和学生(不,这不是一项家庭作业。应许!) 映射1 (professor_id,admin_id和student_id是它们各自表的外键) | mailing_id (KEY) | professor_id | admin_id | student_id | ------------------------------------------------------- | 1001 | NULL | 87 | NULL | | 1002 | 123 | NULL | NULL | | 1003 | NULL | NULL | 123 | 这种方法的+/-在缺点上非常繁重: 每行两个“浪费”字段 违反2NF 容易插入/更新异常(例如,只有0-1字段设置为NULL的行) 但是,专业人士并非没有自己的优点: 可以通过一次查找完成映射 …

7
嵌套实体和叶实体属性的计算-SQL或NoSQL方法
我正在从事一个名为“菜单/食谱管理”的业余项目。 这就是我的实体及其关系的样子。 A Nutrient具有属性Code和Value 一个Ingredient具有集合Nutrients 一个Recipe具有的收藏,Ingredients有时也可以具有其他的收藏recipes 一个Meal有一个收集Recipes和Ingredients 一个Menu有集合Meals 关系可以描述为 在其中一个页面中,对于所选菜单,我需要显示根据其成分(膳食,食谱,成分和相应的营养素)计算出的有效营养素信息。 到目前为止,我正在使用SQL Server来存储数据,我正在从C#代码导航链,从菜单的每一餐开始,然后汇总营养值。 我认为这不是一种有效的方法,因为每次请求页面时都会进行此计算,并且成分会偶尔更改。 我在考虑有一个后台服务,该服务维护一个称为MenuNutrients({MenuId, NutrientId, Value})的表,并且在任何成分(餐,菜谱,成分)发生变化时,将使用有效营养素填充/更新该表。 我认为GraphDB非常适合此要求,但是我接触NoSQL的机会有限。 我想知道显示给定菜单营养的这种要求的替代解决方案/方法是什么。 希望我对场景的描述清楚。

2
如何正确设计NoSql数据库架构?[关闭]
按照目前的情况,这个问题并不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 我想了解有关NoSQL数据库的更多信息,所以我选择从头创建一个新项目来处理足球比赛的结果。在我的传统关系数据库中,我有比赛,团队,成绩和课程表。显然都是相关的。 改用NoSQL方法设计这样的项目可能是一种好的方法?

9
是否有使用Mysql或PostgreSQL的大型银行?[关闭]
按照目前的情况,这个问题并不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 我一直认为最大规模的银行使用Oracle。但是,没有证据表明他们真正使用Oracle而不是Mysql或PostgreSQL,没人知道这个秘密。 知道他们真正使用了什么吗?我可以使用Mysql建立一个可以进行数百万笔交易的ATM /银行系统吗?我可以使用PostgreSQL吗?还是只能使用Oracle?

4
不同类型的NoSQL数据库的缺点
这是我的问题:不同类型的NoSQL数据库有哪些弱点?具体来说,键值存储,图形数据存储和文档存储的弱点是什么? 我一直很容易找到优点,但是有关缺点的文档似乎很少。 编辑:相互比较,以及与关系数据库比较。

8
存储在数据库中的任务的优先级列表
我正在尝试执行以下操作的最佳方法: 我有一个存储在数据库中的任务列表。任务具有分配的优先级。您可以更改任务的优先级,以重新排序执行任务的顺序。 我在想与Pivotal Tracker非常相似的东西。 因此,假设我们有以下内容: 1 Task A 2 Task B 3 Task C 4 Task D 5 Task E 我们认为E现在是最重要的任务 1 Task E 2 Task A 3 Task B 4 Task C 5 Task D 我需要更新所有5个任务以赋予它们新的优先级。 如果任务B变得更加重要,那么我将拥有AI 1 Task E 2 Task B 3 Task A 4 Task C …

8
防范数据库中错误的空条目的设计和实践
程序的一部分从数据库中的许多表和列中获取数据进行处理。有些列可能是null,但是在当前处理上下文中这是一个错误。 从理论上讲,这不会发生,因此,如果这样做,则表明数据错误或代码中存在错误。错误具有不同的严重性,具体取决于哪个字段null。也就是说,对于某些字段,应停止处理并通知某人;对于其他字段,应允许该处理继续进行,而仅通知某人。 是否有任何好的架构或设计原则来处理稀有但可能的null条目? 解决方案应该可以用Java来实现,但是我没有使用标记,因为我认为问题在某种程度上与语言无关。 我的一些想法: 使用NOT NULL 最简单的方法是在数据库中使用NOT NULL约束。 但是,如果原始数据插入比随后的处理步骤更重要,该怎么办?因此,如果插入内容将a null放入表中(由于错误或什至出于某些合理的原因),我不希望插入操作失败。假设程序的更多部分取决于插入的数据,但不取决于此特定列。因此,我宁愿冒险在当前处理步骤而不是插入步骤中出错。这就是为什么我不想使用NOT NULL约束的原因。 天真的取决于NullPointerException 我可以使用数据,就像我期望它始终存在一样(这确实应该如此),并在适当的级别上捕获生成的NPE(例如,以便停止当前条目的处理,而不是整个处理进度) )。这是“快速失败”的原则,我经常喜欢它。如果这是一个错误,至少我会得到一个已记录的NPE。 但是后来我失去了区分各种丢失数据的能力。例如,对于某些丢失的数据,我可以将其省略,但是对于其他一些数据,应停止处理并通知管理员。 null在每次访问之前进行检查并引发自定义异常 自定义异常可以让我根据异常来决定正确的操作,因此这似乎是可行的方法。 但是,如果我忘记在某个地方检查该怎么办?然后,我还会使用从未有过或很少有期望的空检查(因此绝对不是业务逻辑流程的一部分)使我的代码混乱。 如果我选择这种方式,哪种模式最适合该方法? 欢迎对我的方法提出任何想法和意见。还有任何更好的解决方案(模式,原理,代码或模型的更好体系结构等)。 编辑: 还有一个约束,因为我使用ORM进行从DB到持久性对象的映射,因此在该级别上执行null检查将不起作用(因为在null不会造成任何危害的部分中使用了相同的对象) 。我添加此内容是因为到目前为止提供的答案都提到了该选项。



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.