我有一個Django應用程序,它從各種來源收集有關作曲家(音樂意義上的)信息 - API,HTTP POST,刮等等上。如何在Django中處理數據更正(但這不是Django特有的!)
一旦這個信息被彙總,它不是很高的質量。所以你可能在一個地方有「J S Bach」,在另一個地方有「J. S。Bach」,還有其他各種錯誤。這導致我的表中有幾行代表同一個人。
我想通過製作「J. S. Bach」的規範版來消除這些重複,並且讓它如此以至於如果我們看到「J S Bach」,我們就知道要糾正它。在現實中,有很多變化,但我很樂意將修正過程作爲人工輸入的手動修正過程。
所以我的問題是,在代碼中表示這個最好的方法是什麼?此刻,我的模型是:
class Composer(models.Model):
name = models.CharField(max_length=100)
我應該:
- 有一個新的
ComposerCorrection
模式,即映射到composer_id
canonical_id
? - 添加可選
canonical_id
到Composer
型號? - 其他一些我沒有考慮過的事情?
另外值得一提的是,有其他關係,涉及的作曲家,如Work
屬於Composer
。當糾正發生時,這些ID也需要以某種方式重新指出,但我認爲這不是主要問題的一部分。
讓我知道你是否想要更多的信息!
你需要更好地指定給你什麼糾正手段。如果數據庫中存在重複,是否足以消除它?你似乎暗示你想創建一個鏈接到正確的條目,這是爲什麼?是否有關於作曲家的新信息只存在於命名錯誤的db行中? – vascop 2012-03-31 14:44:05
你說得對,我不應該保留那些古老的作曲家信息。我想創建一個鏈接到正確的條目,以便我可以在將來執行更正 - 就像拼寫檢查一樣。因此,如果我再次遇到「J S Bach」,應用程序現在可以確定它應該是「J. S。Bach」。它導致更加整潔的數據。 – 2012-03-31 17:33:52
你可能想要考慮拆分和合並:假設你有一大堆「J. C. Bach」的作品,但是後來有人意識到其中一半是Johann Christian,另一半是Johann Christoph。 – 2012-03-31 18:33:53