У меня есть программа (которую я не могу изменить, это музыкальное приложение, написанное другим разработчиком), которая использует пару баз данных 97 'доступа. Одной из этих баз данных является база данных «Списки воспроизведения» с 2 таблицами «PlaylistNames» и «PlaylistSongs».
Таблица «PlaylistNames» имеет столбец AutoIncrement, Unique, PrimaryKey «autoID» типа long, столбец строки «PlaylistName», в котором содержится имя каждого списка воспроизведения, и столбец «isServerPlaylist» bool, который определяет, создан ли список воспроизведения с помощью пользователь или был отправлен с сервера.
Таблица «PlaylistSongs» имеет столбец AutoIncrement, Unique, PrimaryKey «autoID», столбец «PlaylistID», который представляет собой ForeignKey, указывающий на поле «autoID» предыдущей таблицы, и столбец «TrackID» ForeignKey для другой таблицы, которая содержит Информация о песнях.
Вот так выглядят записи в 2 таблицах:
"PlaylistNames"
autoID: 01 PlaylistName: Rock isServerPlaylist: True
autoID: 02 PlaylistName: Pop isServerPlaylist: True
"PlaylistSongs"
autoID: 01 PlaylistID: 01 TrackID: 100
autoID: 02 PlaylistID: 01 TrackID: 101
autoID: 03 PlaylistID: 01 TrackID: 102
autoID: 04 PlaylistID: 02 TrackID: 103
autoID: 05 PlaylistID: 02 TrackID: 104
autoID: 06 PlaylistID: 02 TrackID: 105
, что означает, что есть 2 текущих списка воспроизведения, Rock и Pop, и каждый состоит из 3 треков.
Теперь существует база данных на стороне клиента и сервера. В базе данных клиента есть копия списка воспроизведения на сервере плюс любой список воспроизведения, который клиент может добавить / создать. Плейлисты на стороне сервера также обновляются.
Допустим, серверные плейлисты - это 2 Rock и Pop. Если пользователь добавляет / создает новый список воспроизведения, новая запись в таблице PlaylistNames будет добавлена в клиентскую базу данных с autoID = 03, playlistName, который выберет клиент, и поле isServerPlaylist = false. В таблицу PlaylistSongs будет добавлено столько записей, сколько песен, которые клиент выберет для добавления в список воспроизведения. Столбец playlistID будет 03.
Сервер также обновляет свои списки воспроизведения, поэтому при обновлении на сервере я мог бы добавить / создать новый список воспроизведения, который будет иметь в таблице PlaylistNames autoID = 03, имя списка воспроизведения, которое я выберу, и для столбца isServerSide установлено значение true.
Я хочу объединить эти списки воспроизведения таким образом, чтобы при добавлении новых списков воспроизведения на стороне сервера и когда клиент создавал свои собственные списки воспроизведения, столбец первичного ключа AutoID объединенной таблицы PlaylistNames будет иметь уникальные значения. Вот где я застрял. Не могли бы вы, ребята, указать способ, которым это можно сделать?