mysql 动态字段_批评我的无限动态字段的MySQL数据库设计

寻找可扩展,灵活和快速的数据库设计,以“建立自己的形式”风格的网站 – 例如Wufoo.

规则:

>用户只有1个可以构建的表单

>用户可以创建自己的字段或从“标准”字段中选择

>用户1表单包含用户想要的字段数

>值可以是另一个值的兄弟E.g照片值可以具有名称,位置,宽度,高度作为兄弟值

特别规则:

>用户每天最多可以提交5次表格

>价值日期很重要

>报告值的灵活性(针对单个用户,跨所有用户,1个字段,许多字段)非常重要 – 数据可视化(大多数将基于时间顺序,例如所有用户的2009年7月的所有照片).

表“用户”

UID

表“field_user” – 将字段分配给用户表单

瞎话

UID

weight – int – 用于对用户表单上的字段进行排序

表“字段”

瞎话

creator_uid – int – 字段’creator’

label – varchar – 例如电子邮件

value_type – varchar – 用于确定将填充’values’表中的哪个字段(例如,如果’int’,则此字段的值将数据提交到values.type_int字段中 – 并且所有其他.type_x字段将为NULL) .

field_type – varchar – 例如’email’ – 用于特殊情况,例如验证规则

表“值”

VID

parent_vid

瞎话

UID

日期 – 日期

date_group – int – 值1-5(用户每天最多可提交5个表格)

type_varchar – varchar

type_text – 文本

type_int – int

type_float – float

type_bool – bool

type_date – 日期

type_timestamp – 时间戳

据我所知,这种方法意味着’Value’表中的记录只有1个数据,其他.type_x字段包含NULL …但从我的理解,这个设计将是’最快的’解决方案(更少的查询,更少的连接)表)

解决方法:

昨天OSCON,Josh Berkus给出了关于数据库设计的一个很好的教程,他花了很大一部分时间无情地撕裂了这些“EAV”il表;你应该很快就能在OSCON网站上找到他的幻灯片,并最终在线录制他的整个教程(后者可能需要一段时间).

你需要一个每个属性的连接(值表的多个实例,你正在获取或更新的每个属性一个)所以我不知道“少连接表”是什么意思.加入同一个表的许多实例并不是一个特别快的操作,并且您的设计使索引几乎不可行且无法使用.

至少作为一个小的改进,使用每个类型的单独的表来表示你的属性值(也许某些索引可能适用于那种情况,尽管MySQL限制为每个查询每个查询一个索引,即使这有点可疑).

标签:dynamic-data,mysql,database-design,dynamic,field

来源: https://codeday.me/bug/20190730/1584519.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值