mySQL多维(多用户)

时间:2015-04-07 13:25:36

标签: mysql database-design

我是mySQL和数据库设计的新手。我认为我之前的解释尝试令人困惑,所以这里有一张图片可供帮助:

enter image description here

我有一个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)此外,数据库行可能会增加一个用户   例如,但并非所有用户都同等,这会导致问题吗?

     

欢迎任何示例,教程或代码片段。

1 个答案:

答案 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;