Я начинаю работу над хобби-проектом по созданию персонального менеджера медиаколлекции. Я буду писать в C# поверх базы данных SQLite. В настоящее время я использую электронные таблицы для отслеживания своих коллекций, что на самом деле работает довольно хорошо, но я подумал, что это может быть забавный проект в любом случае.
Я начал с намерения просто отслеживать мою коллекцию видеоигр. Здесь я собрал модель данных первого прохода (не обращайте внимания на типы данных, не все будет varchar): https://i.imgur.com/eRpKigY.png
Я хочу иметь элемент " "быть экземпляром игры, поскольку я могу владеть несколькими копиями заголовка в разных условиях (обычно в разных цифровых сервисах). Это позволяет мне сохранить все метаданные игры, которые я выбираю (слева), например, MobyGames или TheGamesDB, всего один раз. Кроме того, я намеревался рассматривать мультиплатформенные релизы как разные игры. Например, Doom для P C будет отличаться от Doom для PS4. Я знаю, что это приведет к некоторым дублирующимся данным и может быть лучше нормализовано, но я действительно не владею таким множеством дубликатов, так что все должно быть в порядке, как это.
Так вот где мой возникает вопрос. Эта модель должна хорошо работать для базовой c коллекции просто игр . Но что, если я хочу расширить это? Что если я хочу отслеживать игровые приставки, аксессуары и другие предметы, каждый из которых имеет свои атрибуты? И если я собираюсь расширить его, почему бы не включить другие мои средства массовой информации, такие как фильмы, музыка c и книги? Я не уверен, как включить эти другие типы в управляемый способ.
Это так же просто, как создание соответствующих таблиц для других типов носителей, заменив item.game_id на item. media_id и добавление нового столбца с именем item.media_type? Тогда я бы знал, что media_type «mov ie» означает, что значение в item.media_id относится, например, к таблице mov ie. Это просто кажется мне извращенным.
Или вместо этого полностью отделить коллекцию игр от коллекции mov ie от коллекции книг, чтобы они никогда не перекрывались?
Некоторые другие модели, о которых я не думал
Любые предложения будут с благодарностью приняты.
Спасибо, Патрик