我是mySQL和数据库设计的新手。我认为我之前的解释尝试令人困惑,所以这里有一张图片可供帮助:
我有一个mySQL数据库。不同的用户需要访问数据库,并且当他们登录时,存储的特定于他们的信息被加载到n×m(6×7)表中。此外,他们可能会选择他们想要查看的“月份”,每个月基本上将不同的数据加载到6 x 7视图中。
问题:
1)每个用户是否有不同的数据库(可能有1000个),或者如果它只是一个数据库,我如何安排/管理用户/数据访问?
2)我如何管理/构建“月份”或Z维度,因为我的理解是mySQL是扁平数组。
感谢。
[忽略我下面的笨拙解释]
我的要求是有一个n x m表,其中n是日期 entry和m可以是包含关于用户的数据的第1列到第n列 具体到那个日期 - 天气,食物,衣服。但是,我想要 这个格式/表适用于1到n个用户,因此每个用户都有自己的页面
因此,对于用户1,该表可能如下所示:
06-04-15; sunny; apple; jeans 07-04-15; rainy; orange; coat 08-04-15; snow; mango; vest for user 2 the table may look like: 03-04-15; sunny; apple; jeans 04-04-15; rainy; orange; coat 05-04-15; snow; mango; vest 06-04-15; wind; apple; hat 07-04-15; dry; bread; scarf 08-04-15; snow; mango; vest
1)我想知道这种结构是否可行?
2)以及是否是构建用户的推荐方法 这种类型的数据库?
3)此外,数据库行可能会增加一个用户 例如,但并非所有用户都同等,这会导致问题吗?
欢迎任何示例,教程或代码片段。
答案 0 :(得分:0)
无法在同一行中存储多个值。
虽然您可以将数据捆绑到您自己的数据结构中,这对DBMS是不透明的,但这是非常糟糕的做法。使多个表具有相同结构也是非常糟糕的做法。
您只需使用多行来表示每条记录即可表示数据:
CREATE table multid (
userid integer,
rdate date,
value varchar(20)
PRIMARY KEY (userid, rdate, value)
);
然后,您可以按照所需格式提取数据:
SELECT rdate, GROUP_CONCAT(value SEPARATOR ';')
FROM multid
WHERE userid='user 1'
GROUP BY rdate;