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

时间:2011-02-01 21:15:40

标签: mysql database database-design database-schema

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

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

先谢谢。

3 个答案:

答案 0 :(得分:7)

这是你想要的方式。

您要做的是为每个注册用户提供一个表(可能称为'users'),其中包含一行。为每个用户创建一个新表完全毫无意义,会导致可怕的性能。

也许是这样的:

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

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

答案 1 :(得分:2)

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

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

答案 2 :(得分:0)

您必须混淆单词databasetablefield (or column)record (or row)的含义。

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

在您的示例中,我可以肯定地告诉您,您只需要一个数据库。您想要为许多用户存储信息,因此需要一个表,名为USER。您将需要向用户存储功能,例如:姓名,姓氏,年龄,地址等,然后您需要在此表中创建相应字段NAME,{ {1}},SURNAMEAGE等。然后,您需要将数据作为记录插入数据库中。这将是您要存储的每个用户一条记录。