我需要創建一個跟蹤項目的應用程序。所以我有許多項目,每個項目都有ID,名稱和所有者等屬性。每個項目都有很多任務。每個任務都有屬性,如ID,名稱,完成狀態,優先級和所有者。數據庫設計;動態創建表格
現在,當我爲這個應用程序設計一個DB時,想到了兩種可能的設計。我不知道哪一個是更好的設計。如果你能讓我知道下面的設計中更好的設計,那就太好了,請不要忘記提到爲什麼一個人比另一個更好。
以下是方法。
方法1.在DB中有2個表。一個是項目表,另一個是任務表。任務表將有一個用於項目ID的外鍵,該外鍵將特定任務鏈接到它所屬的項目。這種方法與其他方面的基本區別在於,所有任務不論它屬於哪個項目,都將存儲在一個並且只有一個表中,其長度可以無限增長。
方法2.有一個Project表,並且對於每個項目,動態創建一個僅包含該項目任務的表。因此,將有多少個任務表與項目表中的行數一樣多。可能存在一種算法,我們可以通過該算法得到動態創建的表的名稱。當我們想要查詢它時,可以使用這個邏輯來獲取特定表的名稱。即使看起來很麻煩,我在這種方法中看到的優點是,一個特定項目的所有任務只能在一個表中,其長度不會失控(至少不會像上述情況那樣)。但是桌子的數量可能無限增長。
我完全同意方法2時壞。然而,將其稱爲「反規範化」是對「規範化」一詞的鬆散使用。在這裏玩哪種正常形式? 1NF,2NF,3NF,BCNF,4NF,5NF,6NF或DKNF? –
方法2可能是一個明智的選擇嗎? – OneRandomCoder
@ user2386512號碼 – Kermit