Я не совсем понимаю, зачем при создании таблицы аккаунтов нужно создавать колонку ID? Как ее можно использовать кроме как идентификатор строки?
Вид для печати
Я не совсем понимаю, зачем при создании таблицы аккаунтов нужно создавать колонку ID? Как ее можно использовать кроме как идентификатор строки?
Это конечно мое предположение, но оно логичное: обработка запроса с int значением ID аккаунта выполняется быстрее, чем по нику (потом возможно проверю и скажу точно)
И это удобнее, но опять же по моему мнению. Если делать какую-то реализацию с ником игрока то можно допустить ошибку ведь некоторые символы бывают похожи, как I и l.
В моем моде все реализовано на ID аккаунта, вот допустим загрузка домов работает так: если ID владельца не равен 0, то значит дом занят и в БД выполняется запрос на поиск такого аккаунта, если он найден то загружается имя владельца дома, а если такого аккаунта не найдено то дом продается.
Идентификатор аккаунта используется для работы с домами, бизнесами, машинами, etc... Это облегчает смену ника, то есть если игрок захочет сменить ник, то он будет изменен только в базе аккаунтов, а в базе домов/бизнесов/машин ничего не поменяется.
Вот тут Ziggi прекрасно описал как можно с помощью AUTO_INCREMENT облегчить работу с таблицами
В цикле видео уроков, предоставленного выше, приводится такая структура:Код:Пример ziggi
Игрок
----------------
id | ник | ...
----------------
0 | test | ...
1 | test2 | ...
Навыки
-------------
id | название
-------------
0 | навык1
1 | навык2
2 | навык3
3 | навык4
НавыкиИгрока
--------------------------
id | id_навыка | id_игрока
--------------------------
0 | 0 | 0
1 | 2 | 0
2 | 0 | 1
3 | 1 | 1
4 | 2 | 1
5 | 3 | 1
Как будет лучше? И удобно ли будет хранить в таблице аккаунтов в ячейке id_навыка несколько значений?Код:Игрок
-------------------------
id | ник | id_навыка
-------------------------
0 | test | 1
1 | test2 | 3
Навыки
-------------
id | название
-------------
0 | навык1
1 | навык2
2 | навык3
3 | навык4
- - - Добавлено - - -
как я понял, что бы связать несколько таблиц нужно в создать внешний ключ. Как правильно его создавать в phpmyadmin?
Ну а ты как думаешь? Удобно ли будет каждый раз форматировать столбец с навыками, добавляя новый навык, или же проще создать отдельную таблицу, где для каждого навыка у каждого игрока будет своя строка? И лучше думай насчёт удаления одного из навыков, а не о добавлении новых.
Естественно на обработку запросов уйдёт больше времени, но не существенно больше. Тут суть в упрощении работы с базой данных, а, следовательно, с увеличением удобности.
Да и даже если ты всё сделаешь в одной БД, ты:
1) Так же будешь тратить время на работу с данными для форматирования одной общей строки для всех навыков
2) Усложнишь работу с таблицей (будет сложнее её читать, когда данных наберётся приличное кол-во)
В общем, те временные затраты, которых ты так боишься в случае с несколькими таблицами, могут быть гораздо меньше, если ты будешь одну таблицу для всего использовать