Обработка версий - PullRequest
       4

Обработка версий

1 голос
/ 01 декабря 2011

В настоящее время я работаю над сайтом для клиента, который занимается программными плагинами.Клиент должен иметь возможность загружать Продукты, а для этих продуктов разные Версии, Обновления и Патчи.Например: veProduct v1.1.4 - это Версия 1, Обновление 1 и Патч 4 продукта veProduct.Клиенты должны иметь возможность купить лицензию на версию.Лицензия - это файл, который генерируется для каждого пользователя и должен быть доступен для скачивания.В настоящее время я разрабатываю базу данных для веб-сайта, и я наткнулся на проблему.Как мне обрабатывать различные патчи и версии?

Мой текущий дизайн:

В этом дизайне я создал таблицу Product, которая содержит информацию о самом продукте,нравится имя и описание.Продукта может быть несколько версий, для которых требуются разные лицензии, поэтому я создал еще одну таблицу с именем Version.В этой таблице будет ссылка на скачивание, журнал изменений и цены на эту версию продукта.Также скидка для клиентов, которым принадлежит лицензия более старой версии, но это не важно.После этого я создал таблицу User, чтобы связать пользователя и версию в таблице License.В этой таблице вы также можете найти ссылку на скачивание файла лицензии.

После этого начинается моя проблема.Я создал таблицу Update, например v2.3.Это означает, что его version_id равен 2, а update_id равен 3. Затем я создал таблицу Patch, которая может быть, например, v2.3.1, где version_id равен 2, update_id равен 3 и patch_id равен 1. До сих пор проблем не было, но есть однабольшой недостаток в этом дизайне.Именно тогда я хочу загрузить патч для версии, которая еще не имеет обновлений, например v1.0.1.Это означает, что мне нужно создать запись в таблице update с update_id 0 и без ссылки на скачивание или журнала изменений.Я не хочу создавать запись без какой-либо цели, но быть «родителем» патчей.

[удалено]

Исправление моей проблемы:

Мне трудно придумать решение, поэтому я прошу вашей помощи.

Будет ли хорошей идеей избавиться от полей ссылки на скачивание в таблице версий и обновлений и полагаться на поля в таблице исправлений?Таким образом, я всегда делаю другой патч, даже если я загружаю только более новую версию, или если я загружаю совершенно новый продукт.Просто кажется неправильным иметь таблицу обновлений, только для того, чтобы быть родителем патчей.

Так, кто-нибудь может мне помочь разобраться с этим?Как я должен хранить новые продукты, версии, обновления и исправления в моей базе данных.Где я должен хранить свои ссылки для скачивания?И, наконец, что не менее важно, как я могу сохранить свою версию связанной с клиентом и ссылкой для скачивания лицензии?(Таким образом, каждый пользователь получает свою собственную лицензию для каждой версии продукта, а не для каждого продукта, обновления или исправления)

С уважением,

Scuba Kay

PS: Это действительно не отстойвозможность публиковать изображения, если вы новый пользователь, потому что я бы хотел опубликовать скриншот моего MySQL Workbench вместо основной массы кода.

1 Ответ

1 голос
/ 01 декабря 2011

Вместо обновления и исправления, почему бы просто не иметь таблицу выпуска, которая выглядит следующим образом:

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).

...