【问题标题】:SQL Database design guidanceSQL 数据库设计指南
【发布时间】:2015-11-17 02:43:51
【问题描述】:

我正在尝试设计一个数据库,但遇到了一些小问题。

我正在尝试将项目详细信息存储在两个单独的页面上。当用户第一次创建一个新项目时,他们输入项目名称,然后选择用户和客户端。我有一张图片来证明这一点。

在此之后,用户被移动到项目页面。在这里,他们选择部门和该部门的文档(该部门将有几个可用的文档),然后他们开始为所选文档填写所需的信息。再一次,我有一张图片要演示。

所以我有一个用户和客户表,并将其链接到我的项目表。然后我考虑将部门表链接到我的项目表。在部门表中,我将为所有不同部门创建一个外键,然后为这些部门创建一个单独的表。对于各个表部门,我将拥有该部门需要完成的所有文件的外键。它不完整,但我的EER diagram 看起来像这样。

但由于某种原因,我觉得我没有正确处理这个问题。我觉得应该把一个用户和一个部门联系起来,也许把部门和客户联系起来?

关于我正在尝试做的事情,我希望有人可以指导我正确设计数据库。

只是一些附加信息,在第一张图片中,Project Client 将预填充客户,Project User 将预填充用户。在第二张图片中,Department and Documents 将预先填充不同的部门,以及可供所选部门使用的文档。

【问题讨论】:

    标签: mysql database database-design


    【解决方案1】:

    所以,我认为 tblDepartments 和 tblDocumentOne 是您的关键点。我的想法:

    tbl 部门:

    • 身份证
    • 部门名称

    tblDocumentOne:

    • 身份证
    • 部门ID
    • 文档名称

    然后在 tblProjects 中,您只需要来自 tblDocumentOne 的 ID。为了稍后获取部门名称,您只需加入上面的两个表即可。

    如果表中的条目变化很大,如果您创建和修改了列,每个列都作为日期时间字段,可能会有所帮助。您可以创建这些触发的条目。

    也许这对你来说也是一个要点:我不喜欢向用户显示普通 ID,因为它很容易获得另一个值,尝试某种操作,......我为此使用 UUID,我也由触发器创建。该字段应为 varchar。

    更新:

    如果您的项目中有很多文档,那么我会«拆分» tblProjects,这意味着:

    tblProject:

    • 身份证
    • 项目名称
    • 客户端ID
    • 用户ID

    tblProjectDetails:

    • 身份证
    • 项目ID
    • 文档ID

    【讨论】:

    • 感谢您的意见。所以如果我有很多不同的文件,我会在项目表中列出它们吗?即使不是所有这些文件都会被使用?
    猜你喜欢
    • 2015-11-19
    • 2011-04-11
    • 2010-09-27
    • 2016-03-02
    • 2011-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多