首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我应该改变这个db设计中的任何东西吗?

我应该改变这个db设计中的任何东西吗?
EN

Stack Overflow用户
提问于 2013-07-16 13:34:14
回答 2查看 611关注 0票数 0

作为一个uni项目,我正在为敏捷项目构建一个类似于jira的简约项目管理工具。我将在Java和Hibernate中使用MySql。到目前为止,这是我的数据库模式。你会推荐任何修改吗?

EN

回答 2

Stack Overflow用户

发布于 2013-07-17 02:38:06

你给我们的关于你的需求的信息很少,但我会试着根据我(非常有限的)经验提出一些建议。

  • 你需要从逻辑上考虑如何使用你的数据库,并在此基础上创建你的设计。在我看来,项目是系统的中心,所以一切都应该围绕实体来考虑。
    • 一个项目有很多user.

  • 短跑有很多故事。

  • 一个故事有很多Sprint StoryTask有一个分配的Sprint

从这个概念来看,我们已经有了一个简单的设计:,,

项目--<冲刺--<故事--< StoryTask -- Person

  • 然后你可以进入更多的细节,思考像“我希望我的用户能够处理多个任务吗?”如果答案是肯定的,那么你可以通过Person建立一对多的关系:

Project --< Sprint --< Story --< StoryTask >-- Person

  • 不是说你有你认为可以工作的基本设计,你可以更详细地考虑你的查询。例如,如果您想要获取项目中所有工作人员的列表,则必须编写一个长查询,该查询将连接和搜索所有涉及的表。对于常用的功能,例如列出项目中的所有人员,您可以在Person和project之间创建join:

Person* >--项目--< Sprint --<故事--< StoryTask >-- Person*

  • Also,如果您计划将一个人与多个项目相关联,并且能够查询该人参与了哪些项目,则需要创建一个关系表

个人* --<故事>--项目--<短跑--<故事--< StoryTask >--个人*

在设计数据库之前,最好考虑一下将要运行的查询。例如,如果您想要一个人参与过的所有项目的列表,您可以使用一个相对简单的查询

选择proj.ProjectName FROM Person per LEFT JOIN ProjectPersonnel pp ON per.PersonId = pp.PersonId LEFT JOIN Project proj ON pp.ProjectId = proj.ProjectId WHERE per.FistName = 'Bob'

如果您想要一个与项目中的Sprint相关联的所有故事的列表,那么您就有了相应的结构来为其创建一个简单的查询

代码语言:javascript
运行
复制
    SELECT
    story.StoryName
    FROM
    Story story
    LEFT JOIN Sprint sprint
    ON story.SprintId = sprint.SprintId
    LEFT JOIN Project proj
    ON sprint.ProjectId = proj.ProjectId
    WHERE
    proj.Name = "MyProject1"
    AND
    sprint.Number = "3"

正如我所说的,我在这个领域没有太多的经验,所以肯定有更好的建议-我只是希望这能有点用处。

票数 2
EN

Stack Overflow用户

发布于 2013-07-16 13:51:01

我建议将id字段放在第一个位置,每个表都应该有主键,每个主键应该有不同的名称。

喜欢:project => project_idperson => person_id,.......

此操作将为您部署的数据库查询和应用程序提供便利。希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17668728

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档