MySQL数据库表结构化

时间:2012-03-15 21:06:58

标签: php mysql

我正在开发基于用户的社交网络。我正在用PHP构建网站,我想使用MySQL数据库来存储用户数据。我可以创建数据库/表没问题(我使用phpMyAdmin) 我不确定需要多少个表以及哪些表对我的Web应用程序更实用。有很多桌子会很聪明吗?例如,USERS表。使用列名USER_ID,EMAIL,PASSWORD,LAST_LOGIN,然后使用名为USER_SETTINGS的表来保存每个用户的帐户设置,使用另一个名为POSTS的表,其名称和值归于“状态更新”。或者聪明的把一切都放在一张桌子里?什么是最佳做法?

2 个答案:

答案 0 :(得分:3)

绝对不要将“所有内容保存在一个表格中”。您可能最终得到“很多表”,但这听起来很糟糕 - 基本上,您应该根据逻辑用法对数据进行细分。

例如,如果您在用户表中保留帖子,那该怎么办?当他们发布新帖时会发生什么 - 你会添加另一个字段吗? (坏) - 或者在字段中添加另一个项目并用字符(坏)分隔......等等。唯一真正的方法是拥有另一张桌子。您应该绝对不要将帖子与用户保持在同一个表中

就“个人资料数据”(或任何你想称之为的内容)而言,我喜欢将其分开 - 有些人喜欢将其保存在用户表中 - 这是偏好的问题。

在你的情况下,我建议这样的事情:

//users table
id,
email,
password,
last_login,
//...

//profiles table
id,
user_id,
profile,
age,
gender,
//...

//posts table
id,
user_id,
data,
created (datetime),
modified (datetime)

答案 1 :(得分:3)

我目前正在建立一个社交网站。 不要将所有内容保存在一个表中。事实上,我会说,你不能将所有内容保存在单个表中,而不会立即遇到大量问题。

对于用户而言,我喜欢将密码保存在具有隐藏用户ID联结的单独表中。根据您希望如何强制执行验证和输出的数据完整性,配置文件数据本身可能涉及与用户表联系的表。

我还会将所有帖子保存在单独的表格中。这纯粹是为了您可以根据用户ID查询,然后限制适合您正在查看的任何内容的帖子或帖子的数量。简而言之,将它们放在用户表中就像是说你是你所写的而且是你,而不是说你是独立但相关的对象。