需要有关设计数据库的帮助

时间:2014-10-29 08:38:11

标签: mysql database database-design relational-database

我目前正在制作一个城市旅行指南应用程序,让用户可以探索地点并计划旅行。

在帐户模块中,需要考虑以下功能:

  1. 用户可以通过提供主电子邮件和密码进行注册。

  2. 注册用户可以添加他们的个人详细信息,例如他们可以添加全名,辅助电子邮件,国家和城市。

  3. 用户可以设置他们的个人资料,就像他们可以添加个人资料图片,显示名称,他们访问过的地点等。

  4. 当他们打开自己/他人的个人资料时,他们的个人资料信息(如照片和显示名称)以及他们的“旅行”等统计信息。伯爵,喜欢'数数,'评论'计数将被显示。

  5. 我为帐户模块设计了数据库表,如下所示:

     1. User_Account_details(user_id, primary_email, secondary_email, password)
     2. User_Personal_details(user_id, first_name, last_name, country, city)
     3. User_Profile(user_id, profile_picture, display_name)
     4. User_Statistics(user_id, trips_count, likes_count, reviews_count)
    

    还有3个城市和国家/地区的表格,以便当用户添加国家/地区时,应用程序会从数据库中检索它,并根据城市文本框的建议显示城市。

     1. country(country_id, country_name)
     2. city(city_id, city_name)
     3. country_city_association(country_id, city_id)
    

    有人能告诉我表格中是否有遗漏?或表格是否正常化?或者如果他们缺少正确的关系等?我是数据库设计的新手。请帮助。

1 个答案:

答案 0 :(得分:2)

如果City表包含' country_id'那会更好。这样你就不会需要' country_city_association'表。一个城市只能在一个国家!虽然可以声称“城市”中的有效参赛作品表格将是' Boston',这需要在关联表(马萨诸塞州和林肯郡)中至少有两个条目,这不是一个好主意。

User_Personal_details是完全错误的。如果要显示用户访问过的所有位置,则此表只需要user_id,city_id和日期。如果打算存储用户通常所在的位置,则city_id应位于user_account_details表中。名字和姓氏也应该在帐户明细表中。

user_statistics表会阻止数据库达到第三范式:通过查询其他表可以检索此表中的所有数据。