2016-10-10 56 views
0

我是使用數據庫的新手,並且希望確保理解在不混淆任何相關數據的情況下添加或刪除數據庫中的數據的最佳方法。如何添加數據或將模式更改爲生產數據庫

這裏是我一起工作的場景:

我有一個標籤表中,帶有標識ID列。可以通過Web應用程序選擇標籤來對用戶提交的故事進行分類。數據庫首次播種時;像標籤一起按順序播種。正如你可以看到所有的校園(城市)是1-4,大學(科目)是5-7,人口是8-11。

如果此數據庫在生產環境中生效,並且客戶想要添加新的Campus(城市)標籤,那麼執行此操作的最佳方法是什麼?

所有其他的城市標籤是排序在頂部,它似乎是唯一的選擇是插入任何標籤在表底部,他們將最終採取任何下一個可用的ID是什麼。我想這很好,因爲顯示類別列可以讓我們知道這些新標籤實際屬於哪個類別。

這是典型的嗎?有沒有更好的方法來建立數據庫或處理這種情況,使一切都保持更有組織?

謝謝

+----+------------------+---------------+-----------------+--------------+--------+----------+ 
| ID | DisplayName | DisplayDetail | DisplayCategory | DisplayOrder | Active | ParentID | 
+----+------------------+---------------+-----------------+--------------+--------+----------+ 
| 1 | Albany   | NULL   |    1 |   0 |  1 | NULL  | 
| 2 | Buffalo   | NULL   |    1 |   1 |  1 | NULL  | 
| 3 | New York City | NULL   |    1 |   2 |  1 | NULL  | 
| 4 | Syracuse   | NULL   |    1 |   3 |  1 | NULL  | 
| 5 | Business   | NULL   |    2 |   0 |  1 | NULL  | 
| 6 | Dentistry  | NULL   |    2 |   1 |  1 | NULL  | 
| 7 | Law    | NULL   |    2 |   2 |  1 | NULL  | 
| 8 | Student-Athletes | NULL   |    3 |   0 |  1 | NULL  | 
| 9 | Alumni   | NULL   |    3 |   1 |  1 | NULL  | 
| 10 | Faculty   | NULL   |    3 |   2 |  1 | NULL  | 
| 11 | Staff   | NULL   |    3 |   3 |  1 | NULL  | 
+----+------------------+---------------+-----------------+--------------+--------+----------+ 
+1

這是典型的。您將遇到的問題是維護DisplayOrder列,因爲您獲得的記錄越來越多。 –

+0

@DanBracuk好點...我實際上遇到了類似的問題,特別是在創建和修改種子數據時。我還沒有想出一個處理這個問題的好方法。有沒有更好的管理方法? – Michael

+0

我發現的最好方法是用觸發器來處理DML的每個類別的視圖。這解決了幾個問題。僅顯示城市的下拉列表可以將城市視圖作爲唯一的數據對象。與專業下拉等同等。他們甚至不必知道顯示類別或活動標誌(一個非活動條目甚至不會出現在視圖中)。維護也可以通過視圖來完成。如果這是所需的結果,則刪除觸發器可以僅僅觸發激活標誌。 – TommCatt

回答

3

「自上而下」和你使用的不是真正適用的「底」。 「Albany」不在表格的「頂部」 - 它只是在您查詢表格時沒有指定有意義的排序順序的特定視圖的頂部。它默認爲基於Id或內部ROWID參數的排序順序,而不是邏輯顯示此數據的方式。

表中的數據並非固有排序。如果您想查看按類別組織的標籤,只需通過DisplayCategory(也可以通過之後的DisplayOrder)訂購您的查詢,並且您將看到您的數據正確組織。您甚至可以創建一個持久性視圖,以便爲您提供便利。

相關問題