如何设计这个 MySQL 数据库

3

有200万个用户,每个用户有4个表格。这4个表格中的数据不会被追加,并将保持固定。

每个用户表的结构将是相同的。

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

我需要创建2百万个拥有4张表的数据库吗?

感谢任何帮助。

这4个表格分别是:

  1. 用户1个月内的呼入通话记录
  2. 用户1个月内的呼入短信记录
  3. 用户1个月内的呼出通话记录
  4. 用户1个月内的呼出短信记录

呼叫表格将具有以下结构:

日期 时间 号码 通话时长 费用

呼入短信将具有以下结构:

日期 时间 号码

呼出短信将具有以下结构:

日期 时间 号码 费用


这4个表中的“数据”具体指什么?请详细说明。 - Asaph
1
哦,天啊,不行。你为什么认为每个用户都需要四个表格?我们需要更多关于您的需求的细节。 - Michael Petrotta
你这是什么鬼,有更多的细节吗? - Rohan West
请大家查看问题中的编辑。 - silverkid
6个回答

10

这是一个我称之为元数据Tribbles的SQL反模式。它们看起来可爱友好,但很快就会无法控制地繁殖。

一旦您听到以“每个相同表格”或“每个相同列”开头的短语,那么您可能有元数据Tribbles。

您应该从创建一个具有四个表格的数据库开始,并为每个表格添加user_id属性。

有一些例外情况,您可能希望将其拆分到每个用户专用的单独数据库中,但这些是例外情况。除非您知道自己在做什么并且可以证明必须这样做,否则不要尝试。


我喜欢“元数据 Tribbles”这个名字。仅仅这个名字就值得一个点赞。 - Walter Mitty

4

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


3

不需要每个用户都有 2 百万个只有 4 张表的数据库,只需要一个数据库、4 张表格和为每个用户分配唯一用户 ID。

例如:

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

address table
| user_id (foreign key) | address  |

whatever table
| user_id (foreign key) | whatever |

我不禁想知道为什么您需要每个用户4个表?希望您能理解我试图传达的基本概念。

1
考虑这个例子——从数据仓库借鉴而来——它是一个简单的Kimball星型模型。虽然是一个非常简化的模型,但这四张表可以满足您所描述的需求,甚至更多。

telecom_model_01


0

你只需要建立一个用户表,以及table1、table2、table3和table4。当你需要在table1中添加数据时,只需将users_id包含进去即可。

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的users表)才能连接它们。
希望你明白了。

0

不,你不需要2百万个数据库!

实际上,你只需要4张表的2百万个实例。

当然,你应该设计一个关系型数据库,使得每张表都有与其他表相关联的属性。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接