如何设计这个mysql数据库

时间:2009-11-18 05:39:53

标签: mysql database database-design

有200万用户 每个用户有4个表。 4个表中的数据不会被追加,并将继续修复。

每个用户表的结构都是一样的。

要将这些用户的数据存储在mysql中,我必须设计一个数据库。

我是否需要创建200万个数据库,每个数据库有4个表?

任何帮助表示赞赏

4个表是

  1. 用户的来电记录1个月
  2. 将用户的短信记录保存1个月
  3. 拨打用户1个月的记录
  4. 用户的传出短信记录1个月
  5. 调用表将具有以下结构

    日期时间号码持续时间费用

    传入的短信将具有以下结构

    日期时间编号

    传出的短信将具有以下结构

    日期时间编号费用

6 个答案:

答案 0 :(得分:9)

这是一个SQL反模式,我称之为元数据Tribbles。它们看起来很可爱和友好,但很快就会失控。

一旦你听到“每个......我有一个相同的表”或“每个......我有一个相同的列”的短语,那么你可能有元数据Tribbles。

您应该首先创建一个包含四个表的数据库,然后在四个表中为每个表添加user_id属性。

在某些例外情况下,您希望为每个用户拆分为单独的数据库,但它们是例外。除非你知道自己在做什么,否则不要去那里,并证明这是必要的。

答案 1 :(得分:4)

大多数数据库服务器(和文件系统)都不会处理需要许多单独数据库的实例。我猜你实际需要的是四个表,每个表包含每个用户的一行。这是一个完全合理的要求。

答案 2 :(得分:3)

不,您不需要200万个数据库,每个数据库有4个表。您只需要为每个用户提供1个数据库,4个表和唯一的用户ID。

类似的东西:

users table:
| user_id (primary key) | username |

address table
| user_id (foreign key) | address  |

whatever table
| user_id (foreign key) | whatever |

我不得不想知道为什么每个用户需要4个表?希望你能理解我在这里传达的基本知识。

答案 3 :(得分:1)

考虑这个例子 - 借用数据仓库 - 它是一个简单的金球明星。非常简化的模型,但这四个表格涵盖了您描述的需求,等等。

telecom_model_01

答案 4 :(得分:0)

您只需要一个用户表table1,table2,table3,table4。然后,当您需要向table1输入数据时,只需将users_id包含到table1

TABLE 1                              USERS

ID   usersID     amount   quantity   ID   Name
1       1           200      2        1   John
2       1           400      3      

您可以使用INNER JOIN通过其table1.usersID = users.ID进行连接 所有表必须具有usersID(期望具有ID的用户表)才能连接它们

希望你明白这一点

答案 5 :(得分:0)

不,你不需要200万个数据库!

实际上你需要为4个表提供200万个实例。

当然,您应该设计一个关系数据库,以便每个表都有其他表的关系属性。