2011-12-13 107 views
0

我有一个程序(我无法改变,它是由其他开发人员编写的音乐应用程序),它使用了几个访问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主键列将具有唯一值。那就是我卡住的地方。你们能否指出一种可以做到的方式?

回答

1

我认为服务器端处理不在您的范围之内? (即合并这两个播放列表?)

在这种情况下,我建议,当你的用户创建播放列表下线,它会自动如果已经在服务器上类似的播放列表检查。 从那里开始,您可以下载现有的serverplaylist,然后添加到它。或者您也可以检查该服务器播放列表中的最高ID,并确保您的脱机播放列表从(maximumIDserverside +1)开始。

+0

感谢您的回复。 是的,目前由于该问题没有合并播放列表数据库,唯一的更新发生在歌曲上,并且它是通过检查2个数据库是否具有不同的记录计数完成的硬编码更新。如果是,则下载客户端数据库中丢失的歌曲,并删除表格并使用新条目重新创建表格。有使用这种方法的一个问题,虽然,该应用程序是coffeshops酒吧等表的下降和休闲娱乐的continious音乐播放器可能会导致播放器停止,如果用一首歌混音同时 – Pantelis

+0

发生(下一首歌曲在播放器尝试当数据库 被丢弃时播放)。该公司迄今没有遇到这样的问题,放弃和娱乐需要第二个aprox。但这不是最好的办法。问题是 的播放列表创建/其它显影剂创建的应用程序,并从该应用程序的数据库的更新,以及,这意味着不能 “玩”与在任何tables.I”的自动增量步骤内加入我会尝试并将两个表合并到一张表中,以便我们将PlaylistSongs表数据 与他们所属的播放列表 – Pantelis

+0

放在同一记录中。然后再将这些数据分成2个表格。 – Pantelis

0

这更简单。添加主键isServerPlaylist字段并播放。

+0

我无法更改数据库。 – Pantelis

+0

κρίμα(=怜悯)。这怎么会发生? – 2011-12-13 15:20:32

+0

对不起,我可能会误解你的建议。将主键添加到另一个字段意味着什么?你的意思是我应该将isServerSide设置为主键? – Pantelis