2013-07-16 29 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

相關問題