是否值得仅根据业务目标来拆分表?
注意:所有表格都有相同的列。
一张
orders
表,并用 orderType
列来区分它们。
两张表分别称为
sales_orders
和 purchase_orders
。
更多的桌子怎么样
sales_quotes
, sales_orders
, sales_backorders
, purchase_requisitions
, purchase_orders
...
我认为方法 3 太过分了,而方法 1 的精神负担太大,无法继续过滤 2 个截然不同的业务目标。
方法 2 似乎只是足够的分离,但不确定它以后是否会困扰我。
PS:我知道这是基于意见的,让我拥有这个。
是否值得仅根据业务目标来拆分表?
根据我的观点和经验,简短的答案是肯定的。事实上,不仅值得,“业务(功能)需求”实际上是主要的(如果不是唯一的)指导因素,尤其是概念数据模型。技术方面的考虑,包括简单的规范化,应该放在最后,并且无论如何都要小心:实现与概念模型的差异越大,它就越难以理解和维护(以及可扩展等)。 (“避免过早优化:已经在设计层面。”) 更具体地说,对于具体标准:考虑您的
实体的生命周期(由状态转换图表示,包括所涉及的用户/角色):同一个生命周期=>相同实体,不同的生命周期=>不同的实体。 (一般来说,实体可能与一个状态转换图相关联,以表示非正式地称为它们的“生命周期”,这是 SE 中所谓的“流程流”的最基本组成部分。相应地,在实体中,我们会找到一个“状态”属性来跟踪当前状态。例如(仅作为示例,具体解决方案取决于需求),订单可能是:已接收、已收取、已拒绝、取消、运输、履行、已付款、退款、退回。)