2012-04-24 39 views
1

我正在運行計劃任務,該計劃任務會在每天晚上設定的時間檢查屬性的值。我的計劃是根據返回的值構建前端。如何爲組分配一個ID SQL Server

目前,我在一個晚上的數據庫中返回超過800行,因爲有這麼多的數據要返回。

其中一列是查詢運行的日期 - 這讓我感到這是多餘的,因爲對於每組屬性(即每天晚上執行計劃任務),此dateTime值將是相同的。

什麼是從我的數據庫中刪除冗餘/重複日期的最佳方法?

此刻我已經colmn的標題:

Id -- Name -- AttributeIMeasure -- dateRan 

感謝您的幫助!

+0

你對從查詢返回的數據做什麼?你將它存儲回數據庫,寫入文件還是做類似的事情? – dasblinkenlight 2012-04-24 10:53:38

+0

查詢返回的數據構成存儲在Name和AttributeIMeasure中的數據。所以我將它從一個數據庫複製到另一個(我從中複製的數據庫是動態的,我希望隨着時間的推移來跟蹤它)。 – 2012-04-24 11:03:52

回答

3

我很想創建一個單獨的表,RunInformation,有一個主鍵列,IdRunDate柱:

Id -- RunDate 

你可以從你的表的參考,然後更換dateRan列到RunInformation表。這將允許您在需要時存儲有關運行的更多信息。

Id -- Name -- AttributeIMeasure -- RunInformationId 
+0

我明白了,但這不會減少冗餘數據存儲,會嗎?因爲在給定的一天,我的查詢的每一次運行都會返回一個帶有Name和AttributeIMeasure的行的列表,但是對於返回的所有行,RunDate將是相同的! :) – 2012-04-24 11:06:25

+0

啊,我明白你的意思了。這將減少任何冗餘。我應該向RunInformation表添加什麼樣的參考? – 2012-04-24 12:21:40

+1

您應該將'RunInformationId'添加爲現有表中的外鍵。 – weenoid 2012-04-24 12:23:14

1

我不會刪除這個冗餘。

您是否可以某些您不會只更新一個組的部分
- 某種失敗或錯誤?
- 未來需求的變化?

另外,冗餘的真正缺點是什麼?你想要解決什麼實際問題


如果你真的需要要做到這一點,那麼你只需要映射的方式屬性組。

創建一個attribute_groups表(以id和dateRan字段爲最小值),並將attributeGroupID字段添加到原始表中。


但我還沒有看到在架構複雜性的增加,附加連接如何需要得到DateRan值,並增加了約束,都是值得在這種情況下。

+0

感謝您的回覆。我希望根據我存儲在數據庫中的值構建前端。它可能在未來幾年每晚都會運行,每晚返回〜800個結果。除了dateTime之外,所有這些數據都是必需的。在這種性質的大規模編程方面,我很少有經驗,但是我假定,在存儲所有數據的情況下,如果可能的話,如果我可以從每個數據塊中刪除一列,這將是非常重要的:) – 2012-04-24 11:08:43

+1

我會提醒大家你反對擔心這樣的存儲。如此小規模的空間和效率可能不值得關注。除非將其擴展至數百萬記錄,否則空間差異可以忽略不計。 – Sorpigal 2012-04-24 11:16:50

+0

非常感謝您的建議,這是非常有用的知道:)。 – 2012-04-24 12:16:24