我目前正在开发一个可自定义的表单脚本,我的用户将能够在自定义表单中创建新字段。
如何为它创建MySQL表结构?如果你知道YAML,那会有帮助吗?
答案 0 :(得分:2)
粗略概述......
这是一个基于具有多个表单的一个用户和一个具有多个字段的表单的简单模式。当然,您可以向这些建议字段添加字段,实际上唯一必要的字段是以“_id”结尾的字段。
答案 1 :(得分:1)
User:
columns:
user_id: { type: integer, primary: true, notnull: true }
email: { type: string(80) }
password: { type: string(80) }
Form:
columns:
form_id: { type: integer, primary: true, notnull: true }
user_id: { type: integer, notnull: true }
title: { type: string(80) }
is_active: { type: boolean, notnull: true, default: 1 }
relations:
User: { onDelete: CASCADE, local: user_id, foreign: user_id, foreignAlias: Forms }
Field:
columns:
field_id: { type: integer, primary: true, notnull: true }
form_id: { type: integer, notnull: true }
field_name: { type: string(80) }
field_type: { type: enum, values: [ String, Integer, Float, LongText, Boolean] }
field_value: { type: string(80) }
relations:
Form: { onDelete: CASCADE, local: form_id, foreign: form_id, foreignAlias: Fields }
以上YAML生成的MySQL数据库:
创建表
field
(
field_id
bigint(20)NOT NULL DEFAULT'0',
form_id
bigint(20)NOT NULL,
field_name
varchar(80)DEFAULT NULL,
field_type
enum('String','Integer','Float','LongText','Boolean')DEFAULT NULL,
field_value
varchar(80)DEFAULT NULL,
PRIMARY KEY(field_id
),
KEYform_id_idx
(form_id
),
约束field_form_id_form_form_id
FOREIGN KEY(form_id
)引用form
(form_id
)删除CASCADE
)ENGINE = InnoDB DEFAULT CHARSET = latin1;创建表
form
(
form_id
bigint(20)NOT NULL DEFAULT'0',
user_id
bigint(20)NOT NULL,
title
varchar(80)DEFAULT NULL,
is_active
tinyint(1)NOT NULL DEFAULT'1',
PRIMARY KEY(form_id
),
KEYuser_id_idx
(user_id
),
约束form_user_id_user_user_id
FOREIGN KEY(user_id
)引用user
(user_id
)删除CASCADE
)ENGINE = InnoDB DEFAULT CHARSET = latin1;创建表
user
(
user_id
bigint(20)NOT NULL DEFAULT'0',
password
varchar(80)DEFAULT NULL,
主要关键(user_id
)
)ENGINE = InnoDB DEFAULT CHARSET = latin1;
答案 2 :(得分:0)
您希望用户更改表格结构吗?这意味着你需要执行一个mysql alter query,可能就像
一样 ALTER TABLE the_table DROP COLUMN one_column
或
ALTER TABLE the_table ADD COLUMN another_column
并且您希望在执行此查询之前将其包装在检查表结构的内容中。运行alter table查询后,您就可以进行数据管理了。
我认为在更改表结构之前检查表结构的最佳方法是查看系统表
SELECT table_name, column_name, is_nullable, data_type, character_maximum_length
FROM INFORMATION_SCHEMA.Columns
WHERE table_name = 'the_table'
这将返回有关此表中所有列的信息。
这有帮助吗?