2011-12-01 69 views
1

目前我正在爲一個客戶端的網站工作,他在軟件插件中進行交易。客戶端需要能夠上傳產品,併爲這些產品提供不同的版本,更新和修補程序。例如:veProduct v1.1.4是Product veProduct的版本1,更新1和補丁4。客戶需要能夠購買到版本的許可證。許可證是每個用戶生成的文件,需要可供下載。目前我正在爲網站設計數據庫,而我偶然發現了一個問題。我應該如何處理不同的補丁&版本?處理版本

我目前的設計:

在這個設計中,我創建一個表產品,它包含了產品本身的信息,如名稱和描述。該產品可能有多個版本,需要不同的許可證,所以我創建了另一個名爲版本的表。在這張表中將會有一個下載鏈接,一個更新日誌和這個版本的產品的定價。對於擁有較舊版本許可證的客戶而言,這也是一個折扣價格,但這並不重要。在此之後,我創建了用戶表,以便我可以鏈接用戶和許可證表中的版本。在此表中,您還可以找到許可證文件的下載鏈接。

之後,我的麻煩開始了。我創建了更新表,例如v2.3。這意味着它的version_id是2,它的update_id是3.然後我創建了表格Patch,例如v2.3.1,其中version_id是2,update_id是3,patch_id是1.直到現在沒有問題,但是有一個這個設計有很大的缺陷。那時候我想上傳一個沒有更新版本的補丁,比如V1.0.1。這意味着我必須在表更新中創建一條記錄,其中up​​date_id爲0並且沒有下載鏈接或更改日誌。我不想創建一個沒有任何目的的記錄,而是要成爲補丁的「父母」。

[刪除]

固定我的問題:

我很難想到了解決辦法,所以我問你的幫助。

擺脫版本和更新表中的下載鏈接字段並依賴修補程序表中的下載鏈接字段是個好主意嗎?通過這種方式,我總是可以做出另一個補丁,即使我只上傳新版本,或者我上傳了一個全新的產品。擁有更新表僅僅是爲了成爲補丁父母而感覺不對。

那麼,誰能幫我找出這一個呢?我應該如何在我的數據庫中存儲新產品,版本,更新和補丁。我應該在哪裏存儲我的下載鏈接?最後但並非最不重要的是,我怎樣才能讓我的版本與客戶保持聯繫,以及如何保持許可證的下載鏈接? (所以每個用戶得到他自己的許可證每個版本的產品,而不是每個產品,更新或補丁)

誠懇,

水肺凱

PS:真的很討厭不能夠,如果張貼圖片你是一個新用戶,'因爲我想發佈我的MySQL工作臺的屏幕截圖,而不是大量的代碼。

回答

1

而是更新和修補程序,爲什麼不只是有一個釋放臺看起來像這樣:

release_id, 
version_id, --foreign key 
type, -- this is either UPDATE or PATCH 
release_name, -- this is the full ver number 1.0.1, for instances 
changelog, 
download_link 

這將讓你保持版本,您可以與顧客建立關聯,對許可的目的,但會讓你對您首先創建的內容(更新或修補程序)進行靈活處理,而無需插入虛擬行。

順便說一句:在這個模型中,我會從版本中刪除下載鏈接,所以它只存在於版本級別(本質上是版本1.0.0)。

+0

似乎是一個好主意,但是有一個問題。如果外鍵僅鏈接到version_id,則不可能同時具有Product1 v1.0.0和Product2 v1.0.0。也許我可以通過在Version表中添加version_nr來解決此問題,然後向產品添加外鍵?所以Id與version_nr無關。 –

+0

您在每個產品的版本中都有一個單獨的行,因此外鍵可能沒有問題(因爲產品1版本1和產品2版本1各自具有不同的版本ID)。 – Chris

+0

http://twitter.com/#!/ScubaKay/status/142308141760118784/photo/1/large。那麼如果我不能上傳文件,也許這樣做。你的意思是這樣嗎? –