Я не совсем понимаю, зачем при создании таблицы аккаунтов нужно создавать колонку 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) Усложнишь работу с таблицей (будет сложнее её читать, когда данных наберётся приличное кол-во)
В общем, те временные затраты, которых ты так боишься в случае с несколькими таблицами, могут быть гораздо меньше, если ты будешь одну таблицу для всего использовать
Я сделал такой вывод исходя из ролика выше, точнее из второй его части. Там говорится что для создания механизма внешних ключей, необходимо выбрать подсистему вывода данных InnoDB. Но только там все манипуляции происходили в терминале linux, вот мне и интересно ничего ли больше не нужно делать, кроме выбора этой подсистемы в phpmyadmin.. А так я в принципе все понял, огромное спасибо.
phpmyadmin - веб морда над консолью жи.