0

我們有第三方軟件,我被要求爲它創建一個擴展。該擴展將處理當前軟件中存在的數據,幷包含一些附加數據。我應該使用並添加到現有的非規範化數據庫結構,還是創建自己的?

現有數據非常規範化。我將使用的大部分數據(大約4-5個不同實體)存在於一個表中。我需要爲這些實體中的大多數添加其他字段。

我看到兩種方式這樣做的:

  1. 創建新領域的新表,匹配現有的表1:1,並使用它們使用

    優點相同的非規範化的風格:它適合於現有的非規範化數據庫結構,並且易於創建。缺點:非常規化,而且我有點着迷於正常化我的數據庫。目前的表格已經有50多列,它應該被分成4-5個不同的表格。

    我也不認爲我可以輕鬆地使用EF與當前數據庫結構(與數據庫的工作我的首選方式),並且必須手動創建的,而不是使用EF生成它們

  2. 代碼數據模型
  3. 創建一整套新表和使用觸發器表

    之間的數據同步

    優點:可以創建表我想要的方式,並且可以使用EF來處理數據庫的操作,並生成數據模型對我來說

    缺點:需要使用觸發器來同步數據現有表格

您認爲哪一個更好?

回答

1

我認爲這取決於你在看多少擴展。如果你在現有的界面上添加了一些花裏胡哨的功能,特別是如果你不打算包裝現有的界面,那麼你可能會更好地控制自己的鼻子並且忍受醜陋的基礎數據結構。

這一切都歸結到這是較少代碼一堆建立和維護:一個由非正規化基地+擴展屬性由醜

  1. 擴展代碼 - 或 -

  2. 清潔擴展代碼+所有醜陋的表同步觸發代碼。

在我看來,如果擴展名是真正的實質性的,然後2可能變成小於1。但是,如果你正在尋找的只是那幾個花裏胡哨,那麼1可能會要比2小很多。

1

我認爲答案是如何最好地利用你的時間,結合你對現在和未來的表格有多少控制。就我個人而言,我會創建一個有一些關係的備用表。如果您選擇修改現有的表格,您現在不僅需要對應用程序進行迴歸測試並測試新應用程序,但您將面臨未來更新中斷兩個應用程序的風險。所以我說,與你可以控制的東西一起工作。您的時間將會更有效地使用,並且您將自己定位爲更低的風險。聰明爲你和聰明的業務。希望有所幫助。

+0

我應該重新說明第一個選項......我實際上不會編輯現有的表格,但創建一個新的表格鏈接到1:1以獲取其他數據,使用它們相同數據庫風格。這是我們過去爲其他桌子做的。 – Rachel

+1

我會按照選項一。我認爲選項二是過度殺傷性的,可能是一個管理噩夢。考慮一下如果沒有你的幫助,它會轉移到另一個開發人員是多麼容易或困難。我想我的工作量少,數據管理少,易於維護和可靠性高。 –

+0

我非常同意傑夫在上述評論中的位置。一個喜歡的模式或風格的「癡迷」是不足以做出商業決定的。我可以理解它,並試圖改變現有的東西或以我自己的方式擴展(針對那裏的東西)。就消費的時間和金錢而言,這幾乎總是一個錯誤。除非你的擴展是巨大的,並且你有足夠的時間(這將允許你在數據庫中建立你自己的基礎),否則我會反對迷戀,喜歡簡單模式。在您可以從頭開始的項目中遵循您的偏好。 – Slauma

相關問題