Database 什么时候桌子太多了?

Database 什么时候桌子太多了?,database,database-design,Database,Database Design,我和我的两位同事正在建立一个系统来做各种水文学和相关的事情。它有很多要求,并且有很多表 我们正在处理在这个范围内(水文学)进行的各种取样,我们正在试图找出一种方法,以一种不那么痛苦的方式进行 有时我们需要将所有的采样集合在一起,我开始认为我们的数据库设计过于复杂了 您如何或何时知道自己过度设计了数据库?当然,我们正在考虑很多标准形式的规则和其他良好实践,但是什么时候可以放弃其中一个规则,例如,不规范化某些东西 您对此有何看法?我们有一个包含数百个表的系统-这没什么大不了的,只是数据库中存储了很多

我和我的两位同事正在建立一个系统来做各种水文学和相关的事情。它有很多要求,并且有很多表

我们正在处理在这个范围内(水文学)进行的各种取样,我们正在试图找出一种方法,以一种不那么痛苦的方式进行

有时我们需要将所有的采样集合在一起,我开始认为我们的数据库设计过于复杂了

您如何或何时知道自己过度设计了数据库?当然,我们正在考虑很多标准形式的规则和其他良好实践,但是什么时候可以放弃其中一个规则,例如,不规范化某些东西


您对此有何看法?

我们有一个包含数百个表的系统-这没什么大不了的,只是数据库中存储了很多不同的东西。

简短回答

你不能,担心别的事

长答案

这听起来像是另一种形式的暴力。(YAFPO?)

您应该使用(3NF)设计模式。设计完成后,您应该使用数据填充表并开始分析

如果一个特定的查询被认为成本太高,那么您应该逐案调查

技术性回答(适用于挑剔者,他们不可避免地会反对:“你不能”)


根据您对RDBMS和/或存储引擎的选择,您将在某个时候达到一个极限。可能的上限是内存消耗或打开的文件描述符。

我们的系统中也有大量的表。我们所做的是将数据库规范化到一个好的点,然后创建几个视图,这些视图包含了我们系统最常见的表使用需求。类似的东西也可以帮助您。

“什么时候您的桌子太多了?”

在逻辑设计层面,正确的答案是“永不”


在物理设计层面(就“拥有一个表”而言,实际上指的是与物理设计相关的一些概念),正确的答案是“如果以及当您需要执行的查询,考虑到您使用的DBMS的限制,导致性能低得令人无法接受。”

“正常化直到受伤,非正常化直到起作用。“:您是使用ORM还是直接SQL访问它?我发现,ORM的使用,特别是用于持久化可以分层的信息,并在运行时表示为类层次结构,有助于大量的表。如果我必须手动操作它,那会很可怕。嗯,但是复杂性呢?我们正在使用许多相关的表,例如:我们有一个监测点表、一个仪器表(1:m带监测点)和n个参考仪器的表。这类事情在项目中反复出现。我们做错了吗?还有更好的办法吗?乔治:你应该在另一个问题中问这类问题;不在评论中。向我们展示你的模式并征求反馈意见。但请告诉我们,只有几张表我才意识到你在2010年。我更想知道一百万张以上的桌子是否太多了。@PJBrunet,而我在2020年,我会说答案仍然是,也许是,也许不是。这在很大程度上取决于应用程序,如果您的应用程序是一个专门的应用程序,那么可能有200万个表是正确的,然而,对于绝大多数来说,很多表可能是一些设计问题的迹象。例如,可能您处理大量数据并按表分割数据,如果每个表都有组织且易于引用,那么您仍然很好,但您的表数可能相当高。昂贵的查询可能会受到不同方式的攻击:非规范化、视图、物化视图、检查索引、,检查索引是否在不同的表空间中,@Alfabravo:您是正确的。我不想表达非规范化是唯一的选择。相反,我限制了我的答案的范围来解决“多表”恐惧。对,你也是正确的,无论如何:)顺便说一句:对于我们恐惧的朋友,现在我正在研究一些由一群猴子完成的奇怪的EJB,它们使用大约。。。让我来算一下。。。1600张桌子。所以,买一瓶维生素然后杀了他们!(不是字面意思)哎哟!我想我们没有那么多。它将达到数百(低百),但不会更多。。。