繁体   English   中英

如何设计这个mysql数据库

[英]how to design this mysql database

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

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

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

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

任何帮助赞赏

4个表是

  1. 用户来电记录1个月
  2. 用户短信记录1个月
  3. 拨打电话记录1个月
  4. 用户的传出短信记录1个月

调用表将具有以下结构

日期时间编号期限费用

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

日期时间编号

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

日期时间编号费用

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

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

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

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

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

不,您不需要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个表? 希望你能理解我在这里传达的基本知识。

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

telecom_model_01

你只需要一个用户表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      

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

希望你明白这一点

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

实际上,4个表实际上需要200万个实例。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM