С Новым годом! Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
 Аватар для --Rand--
1 / 1 / 0
Регистрация: 09.07.2009
Сообщений: 93

Хранение в БД.

28.10.2009, 13:27. Показов 2358. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пишу бой для онлайн игры (своей для развлечения) на PHP. Естественно у боя бывает Лог. Так вот не могу никак врубиться в его хранение в БД. допустим:

игрок А ударил Игрока Б -5
Игрок Б ударил, но игрок А заблокировал
теперь это надо сохранить в БД (ну всмысле по мере нанесения ударов, это сохраняется в БД и сразу же отображается).
Помогите набросать структуру таблицы, где храняться эти записи.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.10.2009, 13:27
Ответы с готовыми решениями:

Хранение файлов и файловый менеджер в файле(листе) Excel, Бинарное хранение данных в CustomProperty листа Excel
Всем привет! Хочу поделится наработками, которые получились в процессе реализации своих задач. Отдельная благодарность! Андрей VG, за...

Хранение ID
Здравствуйте! Друзья, подскажите пожалуйста как в базе хранить ID типа 0001? Ну или там следующий получается 0002 Может какой-то тип...

Хранение БД
Вот в папке C:\ProgramData\MySQL\MySQL Server 5.7\Data\topics - храниться моя БД Все символы в названиях таблиц кракозябры, что именно...

15
2923 / 844 / 324
Регистрация: 30.04.2009
Сообщений: 2,633
28.10.2009, 13:29
может стоить хранить не эти записи а то на что они влияют например жизнь
0
 Аватар для --Rand--
1 / 1 / 0
Регистрация: 09.07.2009
Сообщений: 93
28.10.2009, 13:47  [ТС]
Цитата Сообщение от mamedovvms Посмотреть сообщение
может стоить хранить не эти записи а то на что они влияют например жизнь
Ну сам Лог боя ведь должен быть. А насчет жизнь и т.д это будет но в другой таблицею Мне именно с логами что делать не знаю
0
 Аватар для Deicider
98 / 54 / 3
Регистрация: 18.03.2009
Сообщений: 273
28.10.2009, 16:28
Предлагаю следующую структуру:
id | who | what | response

id – номер действия, он же будет ключом таблицы
who – кто сделал действие (писать сюда игрок А или Б)
what – что именно сделал (ударил, порезал, выстрелил и пр.)
response – противодействие (то есть, как у тебя в примере, если игрок заблокировал, то вносить это в эту колонку)
1
 Аватар для --Rand--
1 / 1 / 0
Регистрация: 09.07.2009
Сообщений: 93
28.10.2009, 19:39  [ТС]
Предлагаю следующую структуру:
id | who | what | response

id – номер действия, он же будет ключом таблицы
who – кто сделал действие (писать сюда игрок А или Б)
what – что именно сделал (ударил, порезал, выстрелил и пр.)
response – противодействие (то есть, как у тебя в примере, если игрок заблокировал, то вносить это в эту колонку)
нет не совсем то...По окончанию боя, я хочу чтоб этот лог был доступен как отдельная страница. и эта структура тогда не совсем подходит...потому что собирать все данные будет потом нереально.
0
Программист
 Аватар для motakuji
107 / 111 / 9
Регистрация: 27.09.2009
Сообщений: 331
29.10.2009, 10:33
Цитата Сообщение от --Rand-- Посмотреть сообщение
нет не совсем то...По окончанию боя, я хочу чтоб этот лог был доступен как отдельная страница. и эта структура тогда не совсем подходит...потому что собирать все данные будет потом нереально.
Согласен,ведь в одно и тоже время могут проводиться десятки боёв...Думаю,что нужно создать столбец с ключом(id) самого боя...Можно сделать след:
id | who | whom | action | log_id

Потом с этой таблицей легко работать...В id прописывается ключ со значение auto_incriment дальше я думаю,что всё понятно...Что нам это даст...В поле логе просто вставляем все элементы таблицы,где log_id= идентификатору нашего боя...После окончания боя,если хочешь удалить все записи этого боя,просто сделай удаление всех записей в таблице,где log_id=идентификатору этого боя...Хотя во многих он-лайн играх все логи сохраняются...Предлагаю сделать следующее: создать ещё 1 поле с датой,когда был начат этот бой...И через определённое время,например неделю,или месяц,удалять все записи,в которых в этом поле значение меньше нынешней даты на определённое кол-во дней...уникальный идентификатор для боя можно создать с помощью функции uniqid(),кот создаёт его на основе текущего времени...

Я никогда этим не занимался...Просто это то,что мне первое в голову пришло. Всё конечно можно улучшить,создав несколько таблиц...Если захочешь,могу поделиться своими мыслями далее...
1
 Аватар для Deicider
98 / 54 / 3
Регистрация: 18.03.2009
Сообщений: 273
29.10.2009, 15:12
Цитата Сообщение от --Rand-- Посмотреть сообщение
нет не совсем то...По окончанию боя, я хочу чтоб этот лог был доступен как отдельная страница. и эта структура тогда не совсем подходит...потому что собирать все данные будет потом нереально.
ну эта структура подходит, если на каждый бой будет отдельная таблица. Если всё вперемешку, тогда действительно, как написал motakuji, добавляется столбец с ID боя.
1
 Аватар для --Rand--
1 / 1 / 0
Регистрация: 09.07.2009
Сообщений: 93
29.10.2009, 15:25  [ТС]
Ну это мне ясно..меня другое волнует !


Например ! Записал в БД

id 3
who игрокА
whom игрокБ
action ударил -150, заблокировал в нос.
log_id 3

Таких записей будет допустим 100 и каждая со своим идентификатором, как их потом соединить...если id у всех разные ????? В этом моя проблема, а не в том как вставить и что извлечь.

К тому же одновременно может быть допустим 20 боев, 100 боев на сервере...запись на запись будет лезть...их ведь потом не найдешь...чтоб извлечь.

Насчет хранения...так мне оно и нужно !! чтоб лог боя был доступен и после боя, еще дней 10 например. Просто выводить записи я и без БД могу..аяксом например.
0
 Аватар для Deicider
98 / 54 / 3
Регистрация: 18.03.2009
Сообщений: 273
29.10.2009, 15:26
Соединить элементарно!
SQL-запрос: SELECT * FROM table WHERE log_id=...

получаешь таким образом выборку всех строк, относящихся к конкретному бою. Тут уже не важно, что параллельно в таблицу писалось хоть 1000 боев
1
Программист
 Аватар для motakuji
107 / 111 / 9
Регистрация: 27.09.2009
Сообщений: 331
29.10.2009, 15:29
зачем разный? разный будет только id-это уникальный идентификатор записи в таблице..Вот к примеру
id | who | whom | action | log_id
1 |Игр1 |Игр2 |Ударил150| 1
2 |Игр2 |Игр1 |Удар -200|1
3 |Игр1 |Игр2 |Удар -100|1
и т.д. log_id ты сам вписываешь,а не автоматом... Вот и всё)) вотом делаешь выборку типа
SQL
1
SELECT * FROM logs WHERE log_id=1
и он тебе все эти записи выдаст.
У следующего боя пропишешь в log_id 2 и т.д.
1
 Аватар для --Rand--
1 / 1 / 0
Регистрация: 09.07.2009
Сообщений: 93
29.10.2009, 15:32  [ТС]
зачем разный? разный будет только id-это уникальный идентификатор записи в таблице..Вот к примеру
id | who | whom | action | log_id
1 |Игр1 |Игр2 |Ударил150| 1
2 |Игр2 |Игр1 |Удар -200|1
3 |Игр1 |Игр2 |Удар -100|1
и т.д. log_id ты сам вписываешь,а не автоматом... Вот и всё)) вотом делаешь выборку типа
Код SQL

1



SELECT * FROM logs WHERE log_id=1

и он тебе все эти записи выдаст.
Вот уже становится яснее Просто я присваиваю какое-то значение log_id, а потом по ниму ищу ???

Спасибо, самое главное вы дали нужное направление !!!
0
0 / 0 / 0
Регистрация: 24.03.2010
Сообщений: 3
24.03.2010, 13:59
игрок А ударил Игрока Б -5
Игрок Б ударил, но игрок А заблокировал
id | time | text | log_id

text - сюда HTML код, только со слешами \"

все гениально и просто, лично я так делал аналог лога боя игры Carnage
0
5 / 5 / 1
Регистрация: 23.08.2009
Сообщений: 33
24.03.2010, 14:23
Занимался подобными системами (играми), вот что могу сказать. Если подразумевается лог боя аля:
Боец 1 ударил по колленной чашечке Бойца 2, переломив ему межреберную кость -25 ХП.
то лучше хранить этот лог ввиде HTML кода.
Тоесть в конце каждого хода (когда прошел размен) в файл дописывать строчку.

Здесь есть огромное приимущества в том, что когда ты из БД будеш выдергивать по ИД боя данные, через какое то время это превратится в мучительную операцию для БД. Поэтому проще когда человек открывает лог боя инклудить ему файл (название которого является номер лога) хтмл.

При этом сценариев в файле нет и по сути это вывод хтмл страницы.

При этом так же не сложно сделать и пролистование страниц, работая напрямую со строками или обозначая размен спец тегом.

а если ты просто имееш ввиду лог кто, куда ударил, то лучше хранить его в БД до окончания боя, а после окончания боя выгружать эти данные опять же в ХТМЛ файл.
0
0 / 0 / 0
Регистрация: 24.03.2010
Сообщений: 3
24.03.2010, 20:45
ты хоть в курсе сколько таких файлов накопиться за 1 год в твоей папке? у меня логи записывались в файлы но сервак тупил. Для нормальных логов без MySql не обойтись!!!!! Чел же помощи просил не зря, вот я ему и дал совет как записывать не в файл а в базу не меняя кода.
0
 Аватар для SunDrop
390 / 229 / 11
Регистрация: 09.12.2009
Сообщений: 668
24.03.2010, 23:54
Цитата Сообщение от Archusha Посмотреть сообщение
по ИД боя данные, через какое то время это превратится в мучительную операцию для БД.
Или вы на БД не пользовались индексами или была криво составлена база.
У меня база статистики на 3,5 млн. записей - реальная статистика за год сайта с посещаемостью около 10 тыс человек в сутки... И оптимизированные выборки нормально обрабатывались. И на тот момент это был MyISAM, а не INNODB! Так что, не верю я что при наличии индекса по полю log_id будут какие-то проблемы.
0
0 / 0 / 0
Регистрация: 24.03.2010
Сообщений: 3
25.03.2010, 11:51
он просто написал того чего сам не знает.

Archusha иди изучи работу MySQL, с воздуха ненужно брать типа если база большая то она обязательно должна тупить. ИНДЕКСАЦИЯ и еще раз ИНДЕКСАЦИЯ!!!
Вот сейчас я пишу в форум и мое сообщение записывается в базу но сервер же не тупит из-за того что тут миллионы людей отписываются.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.03.2010, 11:51
Помогаю со студенческими работами здесь

хранение переменных
Помогите решить задачу: логин и пароль заданы по умолчаниу ну например 1 и 1, когда их вводим в textBox (ну разумеется их два на логин...

Хранение изображений
Может кто-нибудь привести пример кода записи изображения на диск iPhone и загрузки с него, пожалуйста :P

Хранение значений
Здравствуйте, в c# новичок, подскажите пожалуйста. Мне нужно хранить значения переменных которые я ввел в программе. Как организовать их...

Хранение классов
В чем отличие хранения классов в исполняемом файле или в dll? Что лучше, как правильнее? Делать много dll или компоновать? Или это просто...

хранение куки
Привет всем! Когда юзер проходит авторизацию, то данные отправляются на сервер. Там сервер устанавливает куки и посылает их браузеру...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru