如何构建我的房主的关联数据库?

时间:2017-04-30 09:44:52

标签: c# mysql database

我试图做一个专门从事房主的会计软件'协会(我必须搜索翻译,只是一个建筑物的所有者协会,为维护和其他建筑需求付费)供我个人使用,因为这是我的工作超过十年。

我阅读和阅读越来越多,设计我的数据库试图规范化而不是:47表35其中有两列相同,一个整数Id用于关联(建筑物)和另一个整数纳税年度的ID。

起初我以为只是将两个数据放在表的名称中,我想做了不同的表,但是我读动态表名是个坏主意。然后我读了很多关于多租户和分区的内容,但我现在仍然感到困惑,现在我越读越困惑。

现在我可以想到四种可能性:

  • 无论如何,不​​要过度复杂化,将两列添加到所有表格中。
  • 添加两列并使用该列执行分区,并在需要时执行复合主键。
  • 做不同的数据库:一个用于没有关联和纳税年度的少数几个表,每个纳税年度每个协会一个。
  • 回到动态表名的想法。

现在,我坚持认为,我读的越多,我就越困惑。有人说这取决于行数,有人说它取决于"平衡"在SELECTUPDATE之间,其他人说各种数据库都是维护噩梦,其他人说各种数据库都比较好,有些人说你在设计阶段尝试做性能事情......

鉴于我多年来在专业会计方面的工作经验,我知道我无法保证数据的大小或数量。虽然一栋建筑可以有五个居民,其数据量非常少,但下一个可以有一个,三个或五百个居民,每个纳税年度有数十万个会计交易(当然,这个数字会在不同的表格中成倍增加)。此外,你可以在建筑物一年工作并被解雇,但在十年以上的另一个工作:建筑物不断来来往往,有时甚至在几年后回来。

所有的事情本质上都是不稳定的,因为每个人都有自己的思维方式,但他们都有自己的住房,因此一栋建筑物中有各种类型,个性,专业和年龄的人都可以想象,一切都搞砸了。

所以,我过度复杂了吗?我应该闭嘴,更简单(添加两列),然后测量结果并修改?我应该选择其他可能性吗?我应该继续阅读,直到我对解决方案感到满意(哎哟,更多阅读?:S)?也许不是严格按照一种方式坚持下去,并以不同的方式做不同的建筑需求?

似乎我无法找到关于所有这些的严格规则,所以任何帮助或建议都会受到赞赏。

编辑:
鉴于Luke Ryan的评论,这里是我在building/tax year dependant tables的app.quickdatabasediagrams.com上做的初步图表的链接,没有两个引用的列。我也是在MYSQL工作台上做的,但我还没有完成它。

此外,没有依赖关系的表是these ones。在最后一个图中,表的主键称为" comunidad "和" ejercicio "是其他表依赖的列。

1 个答案:

答案 0 :(得分:2)

我在聊天时与Nox交谈并推荐以下内容:

  1. 尝试找到代表该域名的模型,并且不需要在任何地方使用建筑物ID和纳税年度,例如 enter image description here

  2. 不要为纳税年度添加外键并构建所有表格。这将使架构变得复杂并影响性能。您可以找到不需要此模型的模型。

  3. 不要为数据使用不同的数据库,这将进行管理,例如备份等更难。
  4. 不要动态生成表格,因为这会使您的查询变得动态和困难。它还会使管理变得困难,例如架构更新,因为他们需要更新许多相同的表。
  5. 继续阅读和学习数据建模:-)例如http://www.agiledata.org/essays/dataModeling101.html