自定义表单在数据库中要怎么储存?

196 天前
 sunmoon1983

目前的一个需求就是要用自定义表单收集数据!

这个需求还行,表结构是这样的

CREATE TABLE "t_fields" (
    "id" int(11) NOT NULL,
    "unique_mark" VARCHAR(32 byte) NOT NULL,    -- 唯一标识,32 位
    "sorted" INT4 NOT NULL,                     -- 核心字段,排序标识
    "content" TEXT NULL,                        -- 真实的内容,这里考虑到字段长度无法确定,只有用 text 来规定
    "deleted" TINYINT(1) NULL DEFAULT 0,        -- 软删除标识
    "table_name" varchar(32) NOT NULL
}

现在就是设计到收集数据这里,还要涉及到统计、报表、图标,这张表不知道怎么设计了,请大佬指教!

1588 次点击
所在节点    MySQL
10 条回复
mightybruce
196 天前
mysql 5.7 以上 支持 json 类型,要么这种自定义结构存类型
要不使用 meta 元数据表和字段

你可以看看 wordpress 的表结构是如何扩展的
https://codex.wordpress.org/Database_Description
nice2cu
196 天前
text 改成 json 吧 不然不好做搜索,但是要支持搜索还是得用 es ck 啥的
NewYear
196 天前
我接触过的无代码平台,每个自定义表单都有自己的数据表,表单的内容和表单里的多行数据,都有单独的数据表和字段,表和字段的名称在生成后是固定的,虽然栏位的名称可以修改但其实改的是备注,有一个表专门记录每个表单的结构。后续出报表啥的也很简单。

你想搞一个统一的表,不是不可以,只是效率太低了。
maocat
196 天前
我选择 mongodb
ZGame
196 天前
@nice2cu 正解
sunmoon1983
196 天前
@NewYear 关键是字段不固定呀
NewYear
196 天前
@sunmoon1983

唉,你还是只想着偷懒,内容都不仔细看一下,这样做不成的。

每增加一个自定义表单,自动增加一个数据库表(按序号 001 、002 ),每个表单增加一个明细表(表单内的子表,可以编号为 001-1,001-2 等等)增加一个数据库表。

每个栏位一个字段(同样是 001 、002 、003 ),数字、字符串、日期这些任何数据库都内置了,上传文件/枚举/字典的你存个 ID ,文件相关信息你建一个总表。

然后你再建一个表,存放每个表单的主表是哪个、明细表有哪些,每个字段的栏位名称是什么。其他信息你也可以存。

别想着全部存一个表里,性能是问题,写统计的时候更难。

其他的自己想吧,这些都有成熟的方案了,你可以去下载个别人的开源程序看一看就知道了。

如果还是看不懂,就忽略吧,当我没说。
sunmoon1983
195 天前
@NewYear 好的,谢谢,我仔细研究一下
xuanbg
195 天前
json
julyclyde
195 天前
如果需要有“某字段=某个值”这种搜索,就不适宜把附加属性压扁成字符串了,还是应该结构化保存
可以试试 json 类型字段,或者是把附加属性按照“外键 ID 、字段名字、字段值”写成附加属性表

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/985627

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX