Вообщем, есть сущности Предмет, Склад. Предмет - это прототип предмета (категория к которой относится предмет, его некие характеристики свойственные данному типу предметов) + определенные характеристики самого экземпляра предмета( ну к примеру, поврежденность, израсходованность). Так же, некоторые предметы можно объединять в одну запись, записывая только их количество (представьте, что есть некоторый контейнер, в который этот предмет кладется).
Все эти предметы хранятся на Складах, то есть 1 предмет - 1 склад, и 1 склад - много предметов.
Для более наглядного примера, пусть есть два типа предметов: оружие, ресурсы. Оружие - это уникальный предмет, имеющий уникальную у уникального экземпляра характеристику "поврежденность".
Ресурсы это предмет, который можно объединять, просто записывая какой ресурсы, и какое количество.
Для организации данной концепции у меня есть несколько решений, не пойму какое правильней:
Создать таблицу storage_items(id,storage_id,item_prototype_id,count,damaged), при этом первичным ключом выбрать id, и создать частичный индекс (storage_id,item_prototype_id) с условием COUNT IS NOT NULL.
Разделить эти предметы по нескольким таблицам.
Создать таблицу storage_items(id,storage_id,item_prototype_id,count) и item_instance_properties(id,items_id,damaged), items_id - ссылка на id в storage_items
Вопрос в том, какой из способов более адекватный?
P.S. Извиняюсь заранее, крайне тупой вопрос..
sim3x: В общем случае, представь себе такую ерунду. Нужно реализовать на уровне БД стэк предметов. (Ну например, как в играх, когда ты добавляешь предмет в инвентарь, и он создает не новое место, а добавляется к уже существующим. Но при этом с ни каждым предметом это можно сделать).
neronru: куча ньюансов
Для игры вцелом, вообще пофиг что там в инвентаре у пользователя - те его можно локализовать в json`е в профайле пользователя и рулить им из бизнесс логики
А бизнесс логика не реализуется в бд
В случае уникальных предметов
В бд есть список предметов
А в jsone пользователя есть указатель на список из бд и характеристики конкретного екземпляра