alexhemp
Постоянно экспериментирую, во многом продвинулся, относительно того, что было неделю назад )).
2
я бы тоже хотел просто удалить, но вот смотрите : если есть SLOT1 SLOT2 и SLOT3 в них i_id - есть, но вот персонаж освобождает SLOT2 - система его удаляет, затем персонаж снимает предмет(нужно «положить» его в 1й попавшийся пустой SLOT), как найти первое попавшееся значение IS NULL(если обнулять а не удалять) я понимаю , но вот каким образом заставить сервер "понять" что первая "дырка" между SLOT1 и SLOT3 и создать SLOT2 ?
4
Насчёт веса(да и насчёт любого свойства предмета), у меня – то отношения стоят 1к1 1 предмет – 1 свойство, уникальные для каждого предмета они потому что, над любым предметом можно произвести ряд действий, скажем отрезать часть ствола и он станет легче… хотя стоп я же могу создать все шаблоны для любых изменений предметов и использовать их, если пользователь изменит предмет, я более-менее понял, поправьте меня, если в чём-то ошибся.
Если обобщить всё выше сказанное по предметам, то мне нужно хранить все схожие свойства в таблице с отношением 1 свойство ко многим предметам, а уникальные, такие как текущая прочность предмета или количество «убитых» им бойцов в отдельной таблице с отношением 1 к 1, я правильно понял ?
-~{}~ 30.11.05 10:17:
кстати есть ли способ тут :
-----------------------
SELECT i.item_name,b.bonus_name,ib.value FROM
items AS i
JOIN i_bonuses AS ib ON i.item_id=ib.item_id
JOIN bonuses AS b ON ib.bonus_id=b.bonus_id
WHERE i.item_id=1
-----------------------
чтобы ib.value выводилось как b.bonus_name то есть AS 'b.bonus_name'
иначе говоря итоговая таблица вида :
_________________________________
имя предм.|имя бонуса1|имя бонуса2.......
-----------------------------------------------------
ствол |а тут не имя а value этого бонуса|......
-----------------------------------------------------------------
может всякая логика и отсутсвует, но было бы удобнее обрабатывать
-~{}~ 01.12.05 18:31:
alexhemp
Структура нынешних отношений :
USERS (user_id,user_name)
ATTRIBS(atr_id, atr_name, atr_def_value)
USER_ATRIBS(user_id, atr_id, atr_value)
ITEMS(item_id, user_id, item_name_id, type_id)
ITEM_NAMES(item_name_id, item_name) – таблица имён предметов
TYPES(type_id, type) – типы предмета (оружие, бронь и тд.)
ITEM_PROPERTIES(item_id, prop_id, value) атрибуты предметов
PROPERTIES(prop_id, prop_name) – названия атрибутов для предметов
ITEM_BONUSES(item_id, bonus_id, value) – бонусы предметов
BONUSES(bonus_id, bonus_name) названия бонусов
SLOTS(user_id, slot_id, item_id) здесь slotnum5…b далее – голова туловище и тд а slotnum1…5 - slot1 slot2 …
SLOT_NAMES(slot_id, slot_name)
Запрос (выводит все бонусы)
SELECT b.bonus_name AS BN,SUM(ib.value) AS TB FROM
i_bonuses AS ib
JOIN bonuses AS b ON ib.bonus_id=b.bonus_id
JOIN slots AS s ON s.user_id=2 //(или любой другой)
WHERE ib.item_id=s.item_id
GROUP BY b.bonus_name
HAVING min(s.slotNum) > 6
Вопросы :
1
обязателен ли суррогатный(id) примори в ITEM_PROPERTIES и ITEM_BONUSES и SLOTS ???
2
Есть ли на Ваш взгляд ошибки в запросе (с точки зрения производительности, так-то он всё рисует
) или всё нормально и можно придерживаться этого примера ?
3
Всё ли ок с отношениями ?
PS если у Вас есть время ответьте плиз.