![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 04.03.2011
Сообщений: 9
|
![]()
Делаю вебсайт для бух учета, и чтобы не вдаваться в их нудные термины попробую изложить проблему на примере игры.
Есть таблица персонажей, примерно, 80 столбцов: имя, сила, ловкость...броня головы, броня корпуса, броня ног, инвентарь...умение стрелять, умение кидать, умение прыгать... С ячейками имя, сила, ловкость все порядковые по другому и быть не могло. Но с "броня головы" уже начинаются проблемы - так как она включает в себя сразу несколько параметров: Название брони | Состояние | Цена | Класс брони | Сила 2 | Ловкость 2 | Требование силы 8... И так все слоты вещей... Чтобы не хранить в столбцах вещей что-то вроде этого - Название брони1<split>Класс брони<split>Сила 2<split>Ловкость 2<split>Требование силы 8<split2> записываю вещь в таблицу вещей [id | Название | Состояние | Цена | Парамерты | Требования], а в таблице персонажей только id. Но такая структура меня не очень то устраивает т.к. чтобы удалить, передать вещь нужно редактировать обе таблицы. И это самые простые примеры работы с вещами... Хочу отказаться от такой структуры и сделать так: Из таблицы персонажей удалить колонки вещей (броня головы, тела...), и создать таблицу только для вещей: [название | параметры | требование | кому принадлежит | тип слота(голова, корпус...)] Этот вариант намного удобнее и универсальнее остальных, но здесь будет примерно в 20 раз больше строк, чем таблице параметров т.к. у каждого персонажа к примеру 10 вещей на себе + еще инвентарь. И получается что строк много, а ключа нет вовсе... Запрос будет представлять что-то вроде SELECT * FROM `DB`.`Вещи` WHERE `имя`="Вася" Люди подскажи какой вариант будет производительнее и лучше, не откажусь от ваших предложений. PS Надеюсь с примером не перегнул просто опыт как геймера побольше, чем программиста и бухгалтера вместе взятых... PPS C нормальными формами знаком, пример слишком сложный и подниматься выше 2НФ сложно, да и в результате получиться десяток другой таблиц, выборка из которых займет целую вечность. |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 08.07.2010
Сообщений: 679
|
![]()
Ну на вскидку я бы предложил первый вариант, потому что второй я слабо понял)))
Что касается БД, то зря вы боитесь Код:
|
![]() |
![]() |
![]() |
#3 |
Регистрация: 04.03.2011
Сообщений: 9
|
![]()
Второй вариант: отличается от первого тем, что там все вещи тупо сведены в одну таблицу и выборку делаем не по id вещи, а по нику персонажа которому эта вещь принадлежит
|
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 08.07.2010
Сообщений: 679
|
![]()
Создаете 3 таблицы:
1. Список персонажей 2. Список вещей с их свойствами 3. Таблица, связывающая первые две со столбцами id.персонаж и id.вещи И обязательно вместо ника использовать id + расставить ключи (либо триггерами). Выборка из всего этого с помощью JOIN - и все просто и логично |
![]() |
![]() |
![]() |
#5 |
Регистрация: 04.03.2011
Сообщений: 9
|
![]()
Спасибо, попробую
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как создать таблицу с полями в асм | Alex1991 | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 6 | 01.12.2010 19:11 |
Как создать таблицу BDE ? | Даниил_глазко | Помощь студентам | 2 | 21.11.2010 11:28 |
Как создать правильно запрос .... | EugeneIsmatulin | SQL, базы данных | 15 | 28.05.2009 09:20 |
Как правильно сохранить данные в таблицу??? | kAtenok87 | PHP | 4 | 07.05.2009 11:24 |
Как создать таблицу в таблице?? | Ntlegend | Помощь студентам | 1 | 14.05.2007 07:37 |