2013-07-16 77 views

回答

0

我建议定位id场到第一位置,每个表应该有主键,并且每个主键应该有不同的名称彼此。

像:project =>project_idperson =>person_id,.......

这一行动将有助于您对数据库查询和您部署应用程序。 希望这有助于。

+0

除了重命名这还有别的吗? –

+0

是的。据我所知(大学课程(DB设计)),你必须为每个字段名称添加前缀。例如在表格'project'中,字段变成:'project_id','project_name','project_description'或者一个位前缀:'pro_id','pro_name','pro_description' –

2

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

  • 你需要逻辑思考你将如何使用你的数据库并从中创建你的设计。在我看来,一个项目是系统的中心,所以一切都应该考虑周围的实体。
    • 一个项目有许多Sprint。
    • Sprint有很多故事。
    • 一个故事有很多故事任务。
    • 每个StoryTask都有一个指定的用户。
  • 所以从这个概念考虑,我们已经有了一个简单的设计:

    Project --< Sprint --< Story --< StoryTask -- Person 
    
  • 然后你就可以进入更详细,对事物的思维像“我是不是想我的用户能够在多个任务上工作?“如果答案是肯定的,那么你可以有从人一个一对多的关系:

    Project --< Sprint --< Story --<StoryTask>-- Person 
    
  • 不是说你有你的,你认为会工作的基本设计,你能想到的关于您的查询更多详细信息。例如,如果您想获得所有在您的项目上工作的人员的列表,您必须编写一个长查询,该查询连接并搜索涉及的所有表。对于常用的功能,如列出了所有的人在一个项目上,你可以创建一个Person和项目之间的连接:

    Person* >-- Project --< Sprint --< Story --<StoryTask>-- Person* 
    
  • 另外,如果你是一个人打算与多个项目相关联,可以查询哪些项目的人已经属于你需要创建一个关系表

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

    它始终是更好地认为你会设计数据库之前运行的查询。例如,如果你想要所有的项目的人已经对列表,你可以有一个相对简单的查询

    SELECT 
    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的所有故事的列表项目时,有到位的结构,以建立该

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" 

一个简单的查询,正如我说的,我没有太多的经验在场上如此,肯定有更好的建议,在那里 - 我只希望这有点用处。

+1

并且不要忘记考虑你会需要数据报告而不仅仅是数据输入。它在数据库的设计上有很大的不同。 – HLGEM

相关问题