数据库结构涉及动态字段

use*_*410 9 mysql database-design relational-database database-schema entity-attribute-value

我正在研究一个项目.它主要用于学习目的,我发现实际上尝试复杂的项目是掌握基础知识后学习语言的最佳方式.数据库设计不是一个强项,我开始阅读它,但它的早期和我仍在学习.

这是我的alpha模式,即时通讯我只是想记下我能想到的一切,看看是否有任何问题跳出来. http://diagrams.seaquail.net/Diagram.aspx?ID=10094#

我想提出的一些问题需要反馈:

注意区域的核心属性,例如,简单地说,区域是厨房,卧室,花园,浴室和客厅.对于可能是主页,联系页面,about_us,启动画面的其他客户.它可能是2个区域,可能是100个,没有必要限制它.

我为默认值创建了单独的表,每个表都链接到一个bug.后来我来到了自定义字段的问题,如果有人想例如标记错误适用的主题,我们没有说,有可能是一个100其他的事情,所以我想坚持到一组核心属性和自定义字段给人灵活性.

然而,当我到自定义字段时,我知道我有一个问题,我不能为每个自定义字段创建一个表,所以我改为使用2个表.自定义字段和custom_field_values.这个想法是包含默认值的每个字段都将存储在此表中,并且每个字段都将链接到值表,这将只有这样的东西

custom_fields table
id            project_id        name
01            1                 area(default)
12            2                 rooms(custom)
13            4                 website(custom)

custom_field_values table
id            area           project_id    sort_number
667           area1          1             1
668           area2          1             2
669           area3          1             3
670           area4          1             4
671           bedroom        2             1
672           bathroom       2             2
673           garden         2             3
674           livingroom     2             4
675           homepage       4             1
676           about_us       4             2
677           contact        4             3
678           splash page    4             4
Run Code Online (Sandbox Code Playgroud)

这看起来像处理这样的动态字段的有效方式还是有其他替代方案?

默认值将是硬编码的,因此您可以使用它们或替换为您自己的默认值,或者我可以创建另一个表以允许用户编辑将链接到其项目的默认名称.任何反馈都是受欢迎的,如果计划中存在一些非常明显的问题,请随意批评.

Bil*_*win 18

您重新创建了一个名为Entity-Attribute-Value的旧反模式.表中自定义字段的概念在逻辑上与关系数据库不兼容.甲关系具有字段的固定数.

但即使它没有适当的关系,我们仍然需要有时做.

有一些方法可以模仿SQL中的自定义字段,但大多数方法都会破坏规范化规则.有关示例,请参阅: