首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >动态需求的数据库结构

动态需求的数据库结构
EN

Stack Overflow用户
提问于 2012-11-05 18:16:20
回答 2查看 139关注 0票数 0

在我们的工单系统中,根据工单的不同需求,我们需要不同的表结构来存储每种类型工单的不同类型的字段。例如,客户投诉产品的工单,需要客户编号。和产品id,但简单查询的工单不需要产品id。某些类型票据可能不需要客户编号。还有。

我们还需要这个系统的分析和报告功能,其中包括这样的动态细节,如产品详细信息和客户详细信息。

作为解决方案,我想到了非SQL DB (这里是Cassandra),它可以支持动态DB结构,并提高分析和报告功能的效率。但是我以前没有使用过任何非SQL DB,所以我对这个解决方案不是很确定。

对于这个问题,有没有人可以提出更好的解决方案,或者提供一些关于非SQL解决方案的想法?

EN

回答 2

Stack Overflow用户

发布于 2012-11-06 04:07:02

我推荐的设计将类似于我在面向对象语言中的设计。这将导致潜在的复杂连接的开销和多个表的开销。我会这样布置我的数据库:

代码语言:javascript
运行
复制
Table GeneralTickets  
(  
    ticket_id number,  
    customer_id number,
    ... other fields that are **common to all tickets**
)    

Table ComplaintTickets
(  
    complaint_id number,
    ticket_id number (FK to GeneralTickets#ticket_id),  
    product_id number,
    ... other fields
)   

Table FeatureTickets  
(  
    feature_id number,
    ticket_id number (FK to GeneralTickets#ticket_id),  
    ... other fields
)   

在这种情况下,No-SQL解决方案不是您想要的解决方案,因为这个问题1)更适合于关系数据库,2)我非常怀疑您记录的数据是否与No-SQL解决方案一样多。

更新

在报告功能方面,我仍然坚持使用关系数据库。从本质上讲,您有一个需要解决的数据仓库问题。您要做的是拥有一系列基表(这些基表将是最终构建报表的表)。根据这些基表,您将创建所谓的materialized views。这些materialized views将在计算出给定时间范围内的所有数据后处理所有数据(例如,您一月份的报告)。

正如您所说,复杂的连接和多个表的开销是我考虑No-

解决方案的主要因素。SQL解决方案会增加维护,也会降低性能。我认为,票证系统与其他系统没有紧密绑定,对于其他详细信息,如产品详细信息或客户详细信息,我们可以在更改事件时从SQL DB同步。你能解释一下你对第二个问题的看法吗?

现在来看看你留下的评论。SQL只有在写得不好的情况下才会很慢,这就是笛卡尔连接和简单索引查找之间的区别。在这一切中,维护确实起着很小的作用。但是,如果不看到您的域对象(在处理结果集之后初始化的类),我就不能谈到维护方面。您的域可能需要修改为比现在更正确的(不是说它是不正确的,只是说它可能更正确)。保持多个系统同步将是您最不想做的事情之一。

票数 1
EN

Stack Overflow用户

发布于 2012-11-06 05:07:12

可以说我很老套,但我想我会建议使用常规的关系数据库。部分原因是,如果“变化的需求”实际上变化如此之大,以至于它们需要NoSQL解决方案而不是引用完整性和ACID属性,我会感到惊讶。部分原因是我知道,对于常规的RDBMS,有各种各样的报表解决方案可用。

我的意思是,你不能只使用可选的(即可空的)字段来建模一个票证,或者定义几个子类型的票证(即使用继承-参见http://blogs.microsoft.co.il/blogs/bursteg/archive/2007/09/30/how-to-model-inheritance-in-databases.aspx)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13229992

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档