我试图开始构建一个充满用户设置选项的仪表板,例如用户配置文件private / public,并添加“Subjects”及其自己的变量保留在数据库中。
我已经为用户提供了表格。一切正常。
使用以下属性:
- user_id
- user_name
- user_email
- user_pass
如果我想要系统,用户可以在数据库中添加喜欢的颜色等文本而不为每个注册到系统的新用户创建新表,我该怎么办?
答案 0 :(得分:0)
一个例子是:
CREATE TABLE IF NOT EXISTS user (
user_id SERIAL,
user_name NOT NULL VARCHAR(32),
user_email VARCHAR(254),
user_pass VARCHAR(128) NOT NULL
);
SERIAL
是BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT
的缩写,你不需要在这里插入值,MySQL会自动处理它。
Official documentation for MySQL 5.5
设置此表后,您可以插入行:
INSERT INTO user (user_name, user_email, user_pass)
VALUES ('some name', 'email@domain.com', 'pass');
答案 1 :(得分:0)
它听起来像你在问如何创建一个表结构,用户可以在其中定义自己的模式。例如,如果用户正在定义他们自己的键/值对信息,并且每个用户都不同。
有几种方法可以采取......
首先,要充分考虑你在做什么。用户是否会遇到真正的电话?或者一些自由格式的文本字段是否足够?系统中还有哪些需要单独跟踪的键/值对?
您可以使用a schema-less database,例如文档存储,其中任何给定记录都可以具有任何可序列化结构。
在关系数据库中,这通常归结为简单地存储键/值对。这样的事情:
{{1}}
有了这个,任何给定的用户都可以存储他们喜欢的任意数量的键/值对。如有必要,您可以继续扩展此结构以添加更多用户数据结构。这样做的一个重要缺点是,所有内容都变为“字符串类型”,这意味着如果值应该数字,那么您的代码需要足够强大,以便在使用该值的任何地方进行验证,因为在后台数据一切都只是字符串。