合并数据库表唯一字段问题

时间:2011-12-13 14:01:12

标签: c# winforms visual-studio ms-access

我有一个程序(我无法改变,这是一个由其他开发人员编写的音乐应用程序),它使用了一些访问97'数据库。其中一个数据库是"播放列表"数据库,有2个表" PlaylistNames"和" PlaylistSongs"。

" PlaylistNames" table有一个AutoIncrement,Unique,PrimaryKey" autoID" long类型的列,"播放列表名称" string列,其中包含每个播放列表的名称和" isServerPlaylist" bool列,用于定义播放列表是由用户创建还是从服务器发送。

" PlaylistSongs" table有一个AutoIncrement,Unique,PrimaryKey" autoID"列,"播放列表ID" column是一个ForeignKey,指向上一个表" autoID"字段和" TrackID"列ForeignKey到另一个保存歌曲信息的表。

这是两个表中的记录的样子:

" PlaylistNames"

autoID:01 PlaylistName:Rock isServerPlaylist:True

autoID:02 PlaylistName:Pop isServerPlaylist:True

" PlaylistSongs"

autoID:01播放列表ID:01 TrackID:100

autoID:02播放列表ID:01 TrackID:101

autoID:03播放列表ID:01 TrackID:102

autoID:04播放列表ID:02 TrackID:103

autoID:05播放列表ID:02 TrackID:104

autoID:06播放列表ID:02 TrackID:105

这意味着当前有2个播放列表,Rock和Pop,每个播放列表包含3个曲目。

现在,有一个数据库的客户端和服务器端副本。客户端数据库具有服务器的播放列表副本以及客户端将添加/创建的任何播放列表。服务器端的播放列表也会更新。

让我们说服务器播放列表是那些2 Rock and Pop。如果用户添加/创建新的播放列表,PlaylistNames表上的新记录将添加到客户端数据库上,autoID = 03,客户端将选择的播放列表名称和isServerPlaylist字段= false。在PlaylistSongs表中,将添加与客户端将选择添加到播放列表中的歌曲一样多的记录。播放列表ID列为03。

服务器还会更新其播放列表,因此,如果服务器上有更新,我可能会添加/创建一个新的播放列表,该播放列表将在PlaylistNames表autoID = 03中,我将选择一个播放列表名称,并且isServerSide列设置为true。

我想要做的是合并这些播放列表,以便在服务器端添加新的播放列表时以及当客户端创建自己的播放列表时,合并的PlaylistNames表的AutoID主键列将具有唯一值。那就是我被困的地方。你们能指出一种可以做到这一点的方法吗?

2 个答案:

答案 0 :(得分:1)

我认为服务器端处理无法实现? (即合并两个播放列表?)

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

答案 1 :(得分:0)

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