我可以在社交网站中为每个用户创建每个表吗?

问题描述 投票:4回答:3

我正在创建一个具有类似Facebook功能的社交网站。我想从我的数据库的架构设计开始。我想的是为每个注册到我们网站的用户创建每个表..我做得对吗?

如果有一百万用户注册到我的网站,将创建一百万个表。如何继续优化这个?请建议我克服这个的技巧,一些参考或书籍,以了解这些概念将是有用的..

提前致谢。

mysql database database-design database-schema
3个回答
7
投票

这不是你想要的方式。

你想要做的是有一个表(可能称为'users'),每个用户注册一行。为每个用户创建一个新表是完全没有意义的,会导致糟糕的性能。

也许是这样的:

 TABLE users
   - username AS VARCHAR(255)
   - password AS VARCHAR(255) (use a hashed password, of course)
   - ...

然后,当用户注册时,只需将他们提供的信息作为新行插入users表中。


2
投票

这将是巨大的矫枉过正。您应该阅读数据库设计(从规范化开始,但不要过度)。然后记下您要为每个用户保存的内容,并考虑如何保存它而不保存数据双倍。

但我很确定每个用户的表不是一个选项。


0
投票

你必须混淆databasetablefield (or column)record (or row)这两个词的含义。

  • 数据库包含特定项目的所有数据。每个项目总共有一个数据库(或几乎总是)
  • 表包含特定实体的所有数据,并且通过说实体,我指的是可以想象为真实或单独存在的对象类型。人是实体,书是实体,电话是实体,电影是实体等。这些中的每一个都是数据库中的单独表。
  • 字段(或列)是表示表的实体的特定特征(特征)的数据类型。例如,用户表可以包含以下字段:NAMESURNAMEAGE等。这些都是用户拥有的所有功能。
  • 记录(或行)是一个表的实际项目。它是表格实体的单个“部分”。例如,在用户表中,一个记录是单个用户,即{NAME:"John", SURNAME:"Smith", AGE:"32"}

在您的示例中,我可以确定您只需要一个数据库。您希望为许多用户存储信息,因此您需要一个名为USER的表。您需要为用户存储功能,例如:姓名,姓氏,年龄,地址等,然后您需要在此表中创建相应的字段:NAMESURNAMEAGEADDRESS等。然后您将需要将数据作为记录插入数据库中。它将是您要存储的每个用户一条记录。

© www.soinside.com 2019 - 2024. All rights reserved.