社交网络应用程序的数据库设计是正确的还是应该进行一些修改?

时间:2013-02-21 14:04:03

标签: mysql database database-design relational-database database-schema

我正在制作社交网络应用程序。数据库将是大约10000的MySQL。到目前为止,我已经有了以下数据库方案。

用户详细信息(用户首次注册时的这两个表)

数据库设计
USER_TABLE(USER_ID,用户名,密码);
 个人信息(* user_id *,dob,sex,contact)

用于发布状态(当用户发布状态并在其他人的墙上更新时) 我想为此制作4个单独的表格

  1. 用于发布具有唯一ID的状态。
  2. 用于存储和检索喜欢该状态的人的姓名。
  3. 用于存放 并检索有关人员的状态和姓名的评论 谁评论说。
  4. 用于检索对状态发表的评论的喜欢。
  5. 数据库架构如下: Status_Table(* STATUS_ID *,USER_ID,状态,日期,时间,no_of_likes,profile_pic_id) Likes_Table(STATUS_ID,用户名) Comment_Table(STATUS_ID,USER_ID,评论,COMMENT_ID,no_of_likes_on_comments) Likes_on_Comments(COMMENT_ID,用户名)

    关注系统(就像推特)
     数据库模式
    跟随者(USER_ID,followers_id);

    通知(喜欢,评论,标签,跟随)
    数据库模式
    通知(notification_id,USER_ID,SENDER_ID,STATUS_ID,类型,is_seen);

    此数据库设计最适合我的应用程序,还是应该进行一些更改?

    我也不确定照片的实现方式。我应该在哪里存储所有用户的照片。(图片包括(个人资料照片,专辑) 它是将数据存储在数据库中的好方法,还是应该将它们存储在文件系统中。并在数据库中提供照片/相册的路径??

    感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

有关您的架构的几条评论:

1)你应该考虑合并几个表。如果两个表具有“一对一”关系,并且从一个表到另一个表的信息之间存在强连接,那么您应该合并表。 这将是USER_TABLE和PERSONAL_INFO的情况。

2)关于STATUS_TABLE,STATUS_LIKES,COMMENTS和COMMENTS_LIKES - 我会考虑将所有内容合并到两个表中 -

USER_ACTION - 将保留并执行评论,图片发布或状态更改等操作。

LIKES - 将保留USER_ACTION表之类的内容。