Вопрос или проблема
Друг хочет создать онлайн-базу данных, которая будет содержать каждую карту, существующую в мире. Это включает в себя всё, от карт магии «Magic the Gathering», спортивных карт до обычных (52) карт, карт Риска и т.д. Я хочу помочь, и хотя мне кажется невозможным иметь каждую карту, мы могли бы собрать много.
Теперь я задумываюсь, какой будет лучший способ хранения карт. Существует ли что-то вроде Wiki, но с более структурированными данными? С одной стороны, Wiki кажется подходящей, так как нам не нужно беспокоиться о разных моделях данных для различных игр (мы просто вводим карты в виде свободного текста), но с другой стороны, что-то вроде MongoDB кажется более подходящим, так как лучше иметь структурированные данные, и будет возможно для посетителей фильтровать карты по свойствам игры. Я думаю, что уже слишком много разных игр, чтобы вручную программировать представление (как в mVc) для каждой игры. Существует ли что-то среднее между MongoDB и Wiki?
Ещё одна идея заключалась бы в создании “CMS” с no-sql базой данных, где все карты находятся в одной таблице, где вы можете вручную, без программирования, создавать представления (т.е. макет интерфейса) на основе определённых свойств каждого элемента. Например, вы могли бы создать “Представление существ Mtg”. И когда таблица карт содержит что-то вроде
{ "card-type": "ccg",
"game": "Magic the Gathering",
"expansion": "Ледяная эпоха",
"type": "Существо",
"Power": "7",
"Toughness": "6" }
то это представление будет применено, потому что “игра” и “тип” совпадают. Существует ли что-то подобное или возможно модифицировать существующую структуру для этого?
Я бы порекомендовал вам установить Wikibase на ваш сервер:
https://www.mediawiki.org/wiki/Wikibase
Это очень структурировано, так что вы можете настроить свойства (название, уровень, происхождение, изображение и т.д.), которые может иметь каждая карта.
В духе вики, это легко редактировать любому, кому вы предоставите разрешение.
В отличие от Википедии и т.д. нет вики-кода, вы не можете сделать синтаксическую ошибку.
Тестовый элемент на wikidata.org, экземпляр Wikibase: https://www.wikidata.org/wiki/Q4115189
Скриншот экземпляра Wikibase, размещенного на wikidata.org:
Ответ или решение
Когда речь идет о создании онлайн-базы данных для хранения карт (наборов карт, спортивных карточек и т.д.), важно выбрать правильное решение, которое обеспечит баланс между структурированностью данных и доступностью для пользователей. Существуют различные подходы к организации такой базы, и я рассмотрю несколько из них, чтобы помочь вашему другу определиться с наилучшим вариантом.
Вики или CMS: что выбрать?
-
Вики-платформы:
Вики-платформы, такие как MediaWiki, позволяют пользователям добавлять и редактировать информацию о картах в свободном формате. Однако, как вы правильно заметили, в случае с большим количеством различных игр может возникнуть сложность в управлении данными и их структурированности.Преимущества:
- Простой интерфейс для редактирования.
- Возможность неограниченного ввода данных.
- Сообщество может вносить вклад, что может привести к более полной базе данных.
Недостатки:
- Отсутствие структурированных данных затрудняет фильтрацию и поиск.
- Возможны ошибки в вводе данных из-за отсутствия строгих схем.
-
CMS (Система управления контентом):
CMS, как WordPress или Joomla, позволят создать более управляемую и структурированную базу данных. Используя плагины, можно создать свои типы записей для карточек, добавить различные поля для ввода.Преимущества:
- Возможность создания пользовательских интерфейсов и форм ввода.
- Легкая настройка представлений данных через плагины.
- Высокая степень контроля над дизайном и функциональностью.
Недостатки:
- Меньшая гибкость в расширяемости.
- Зависимость от выбранных плагинов, которые могут не поддерживаться в будущем.
-
Современные NoSQL базы данных:
Использование NoSQL баз данных, таких как MongoDB, позволяет хранить данные в более структурированном виде. Это особенно полезно для фильтрации и создания различных представлений на основе характеристик карт.Преимущества:
- Гибкость в структуре данных и возможность масштабирования.
- Легкость в фильтрации и поиске по свойствам (атрибутам) карт.
Недостатки:
- Требует разработки пользовательского интерфейса для отображения данных.
- Необходимость программирования для настройки представлений и фильтров.
Предложение: Wikibase
С учетом всех вышеперечисленных аспектов, я рекомендую вам рассмотреть внедрение Wikibase. Эта платформа сочетает в себе лучшие характеристики вики и структурированных данных.
Преимущества использования Wikibase:
- Структурированность данных: Вы можете создать определенные свойства для карт (например, название, игра, тип и т.д.).
- Упрощенное редактирование: В отличие от традиционных вики, Wikibase позволяет пользователям вводить данные без необходимости в изучении вики-формата, что снижает риск ошибок.
- Гибкость: Вы можете настраивать представление данных для различных карточных игр, используя общую структуру.
Заключение
Выбор платформы для хранения карточной информации зависит от нужд вашего проекта. Если требуется максимально структурированные и управляемые данные с возможностью совместного редактирования, Wikibase может стать вашим наилучшим выбором. Он обеспечивает необходимую гибкость, а также мощные возможности для фильтрации и представления информации, что идеально подойдет даже для сложных систем, включающих в себя много различных карточных игр.