我有一個程序(我無法改變,它是由其他開發人員編寫的音樂應用程序),它使用了幾個訪問97'數據庫。其中一個數據庫是一個「播放列表」數據庫,有兩個表格「PlaylistNames」和「PlaylistSongs」。合併數據庫表格唯一字段問題
「PlaylistNames」表具有long類型的AutoIncrement,Unique,PrimaryKey「autoID」列,保存每個Playlist名稱的「PlaylistName」字符串列和定義是否創建播放列表的「isServerPlaylist」bool列由用戶或從服務器發送。
「PlaylistSongs」表具有AutoIncrement,Unique,PrimaryKey「autoID」列,「PlaylistID」列是指向前一個表「autoID」字段的ForeignKey列和指向另一個表的「TrackID」列ForeignKey列歌曲信息。
這是2個表中的記錄看怎麼樣:
「PlaylistNames」
自動識別:01 PlaylistName:搖滾isServerPlaylist:真
自動識別:02 PlaylistName:流行isServerPlaylist:真
「PlaylistSongs」
自動識別:01 PlaylistID:01的TrackID:100
自動識別:02 PlaylistID:01的TrackID:101
自動識別:03 PlaylistID:01的TrackID:102
自動識別:04 PlaylistID:02的TrackID:103
自動識別:05 PlaylistID:02的TrackID: 104
自動識別:06 PlaylistID:02的TrackID:105
這意味着有2個當前播放列表,搖滾和流行,並且每個包括3個軌道。
現在,有一個數據庫的客戶端和服務器端副本。客戶端數據庫具有服務器的播放列表副本以及客戶端添加/創建的任何播放列表。服務器端的播放列表也會更新。
可以說服務器播放列表是那些2搖滾和流行音樂。如果用戶添加/創建新的播放列表,PlaylistNames表中的新記錄將添加到客戶端數據庫中,其中autoID = 03,客戶端將選擇的播放列表名稱以及isServerPlaylist字段= false。在PlaylistSongs表中,將添加與客戶將選擇添加到播放列表中的歌曲一樣多的記錄。播放列表ID列將爲03.
服務器也更新其播放列表,因此,通過服務器上的更新,我可能會添加/創建一個新的播放列表,播放列表名稱中會包含自動ID = 03的播放列表名稱,我將選擇並將isServerSide列設置爲true。
我想要做的就是合併這些播放列表,方式是當在服務器端添加新播放列表並且當客戶端創建了自己的播放列表時,合併的PlaylistNames表的AutoID主鍵列將具有唯一值。那就是我卡住的地方。你們能否指出一種可以做到的方式?
感謝您的回覆。 是的,目前由於該問題沒有合併播放列表數據庫,唯一的更新發生在歌曲上,並且它是通過檢查2個數據庫是否具有不同的記錄計數完成的硬編碼更新。如果是,則下載客戶端數據庫中丟失的歌曲,並刪除表格並使用新條目重新創建表格。有使用這種方法的一個問題,雖然,該應用程序是coffeshops酒吧等表的下降和休閒娛樂的continious音樂播放器可能會導致播放器停止,如果用一首歌混音同時 – Pantelis
發生(下一首歌曲在播放器嘗試當數據庫 被丟棄時播放)。該公司迄今沒有遇到這樣的問題,放棄和娛樂需要第二個aprox。但這不是最好的辦法。問題是 的播放列表創建/其它顯影劑創建的應用程序,並從該應用程序的數據庫的更新,以及,這意味着不能 「玩」與在任何tables.I」的自動增量步驟內加入我會嘗試並將兩個表合併到一張表中,以便我們將PlaylistSongs表數據 與他們所屬的播放列表 – Pantelis
放在同一記錄中。然後再將這些數據分成2個表格。 – Pantelis