【问题标题】:Optimal database structure最优数据库结构
【发布时间】:2016-11-24 02:19:07
【问题描述】:

我正在为本地酿酒厂开发生产控制应用程序,但在构建数据库时遇到问题。

一个核心功能是用户创建精神类型的能力,这些类型都有相关的生产过程。每个过程可以有多个步骤。有 7 种不同类型的步骤。

当用户创建“批次”某种烈酒时,将选择一种烈酒类型,并按照定义的生产流程向用户呈现“向导”。在每一步,用户都会输入与该步骤相关的信息。

我想出的是这种多对多的关系:

spirits (spirit types)
- id
- name

steps (steps in the production process)
- spirit_id
- state_id

states (names of all possible steps)
- id
- name

虽然这对创建精神类型很有效,但在填写数据时却有所欠缺。由于生产过程步骤中的每个步骤都需要不同的数据:

distillation
- abv
- mass

dilution
- abv
- water

filtration
- density
- volume

这种应用程序的最佳结构是什么?

【问题讨论】:

  • 我喜欢 SQL,但您所描述的内容听起来确实是 Mongo 或其他一些 nosql 数据库的问题。我使用 Mongo 取得了一些成功,根据我的经验,它运行良好。我在 Java 中工作,并且我发现了大量用于使用该语言使用 Mongo 的高质量资源。我认为大多数主要语言的情况都是相似的。 (这不是插件,我更喜欢在大多数事情上使用 SQL。)
  • 我在这些设置中使用键/值对。它不是最可扩展的,但除非您有几百万个进程,否则它应该可以工作。名称值对、键值对、属性值对、EAV....都引用同一个东西。许多开发人员不会选择这个。另一种情况:stackoverflow.com/questions/19458613/…

标签: mysql sql database database-design relational-database


【解决方案1】:

对我来说,您应该使用一些表格来管理流程和 stess 之间的主/详细关系.. 将其与类似的步骤类联系起来

activity (class of steps in the production process)
 - activity_id 
 - name

process_phase  (master table for process steps)
 - process_phase_id
 - description 
 - activity_id
 - spirit_id

process_phase_detail  (detail table for process step )
 - process_phase_id
 - detail_id
 - state_id

PS——数据建模(没有严格的规范)是一个基于意见的领域..

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-30
    • 2013-04-21
    • 1970-01-01
    • 1970-01-01
    • 2011-04-09
    • 1970-01-01
    • 2011-11-23
    相关资源
    最近更新 更多