【问题标题】:Naming conventions for MySQL tablesMySQL 表的命名约定
【发布时间】:2013-11-02 23:42:37
【问题描述】:

我想得到一些意见,因为我正在考虑为我的新应用程序创建结构并且我正在为表格的名称而苦苦挣扎,所以我想也许你可以给我一些想法。应用程序有用户,用户可以创建项目,而项目可以有多个关键字。所以用户与项目是一对多的关系,项目与标签是多对多的关系。

所以有表users 我想项目表应该是users_projects。但是关键字呢?应该是users_projects_keywords 吗?那么数据透视表呢,因为我认为将其命名为 users_projects_to_users_projects_keywords 或类似名称有点糟糕。我将不胜感激。

编辑: 我一直认为一对多的关系应该被称为 x_y ,其中 y 属于 x。这不是一个好习惯吗?

【问题讨论】:

  • 我喜欢:项目、用户、projects_users。核心表有单字母别名 (p,u),链接表有两个字母别名 (pu)。链接表中的 user_id 列链接到用户表中的 user_id 列。
  • @Strawberry 但是这个项目表真的是核心表吗?因为它依赖于一对多的用户?我担心可能有两种项目具有不同的列,因此它们不能放在一张表中。比如开发项目和用户项目。
  • 我只是在谈论我的基本命名约定。如果设计更复杂,那么命名模式可能需要更复杂来反映这一点。但不要为这些东西苦恼。练习会变得更容易。

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


【解决方案1】:

我会选择usersprojectskeywordsproject_keywords。我会使用外键来定义表之间的关系。例如,projects 将有一个列,例如 createdby_userid,引用 users.user_id 列。

【讨论】:

  • 嗯,我一直认为一对多的关系应该命名为users_projects这个表中的user_id。在还有管理项目的情况下怎么办?然后我不能命名我的表项目,因为有这样的 user_projects 调用。嗯,这很难:)
【解决方案2】:

一个想法:

可能有三个字典:

  • users 应该有id 和其他数据。
  • projects 也是如此。
  • 等表keywords

然后你创建“链接”(关系)表:

  • users_projects 与列id, id_user, id_project
  • projects_keywordsid, id_project, id_keyword

编辑: 正如@Laurence 所提到的,将id_user 包含在projects 表中也许确实是合理的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-07
    • 1970-01-01
    • 2011-12-15
    • 2013-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多