【问题标题】:How to design a database for subcategories with different field sets?如何为具有不同字段集的子类别设计数据库?
【发布时间】:2023-03-24 09:33:01
【问题描述】:

对于一个学校项目,我正在设计一个系统来记录针对残疾人的不同类型的建筑违规行为(抱歉,我的语言很粗鲁,我不会说英语)。

有许多不同的违规类别和子类别,每个违规子类别都有不同的字段集。添加违规的表单将是动态的,根据子类别,用户将面临不同的字段集。字段可以是二进制或整数。有些违规可能有多个字段。

我的问题是我应该如何设计这样一个系统的数据库?

到目前为止我的想法类似于this

你觉得这个设计怎么样?这是我第一次实现这样的系统,所以我不知道它会如何工作。

【问题讨论】:

  • 我将其标记为离题。这里的其他网站更适合算法/代码预览。
  • 也许更适合dba.stackexchange。顺便说一句,看看WordPress database model 以获得灵感 - 它有一些好的(和一些坏的)想法。
  • 当您写“不同的字段集”时,您是什么意思?不同的字段值还是真正不同的字段?我解释。在第一种情况下,您有一个包含两个字段的表:整数 I 和二进制 B。用户可以在该表中输入不同的值,但字段保持不变。在第二种情况下,您有许多字段的表:I1,I2,...,In; B1,B2,...,Bm。并且用户在预定义的设置字段中输入值。哪个案例是你的?
  • 真正不同的领域。例如,坡道违规具有坡度场。但是,网格违规将具有网格间隙和网格方向(二进制)字段。用户将能够提供任何值。
  • 也许对 EAV(实体属性值)设计进行一些研究。这通常是不受欢迎的,但做一些研究会让你对它的优点和缺点有所了解。

标签: database database-design


【解决方案1】:

看看 Wordpress 是如何设计的,它的表比其他 cmses 少得多 - 帖子表只有基本字段,而许多不同帖子类型所需的数据变化在 wp-postmeta 中处理 - 它有四个字段 - 帖子 ID、元名称和元值(加上顺序,很少需要)。

【讨论】:

    猜你喜欢
    • 2012-10-22
    • 1970-01-01
    • 2015-10-15
    • 2019-05-04
    • 1970-01-01
    • 2011-07-20
    • 1970-01-01
    • 2021-06-13
    • 1970-01-01
    相关资源
    最近更新 更多