PDA

Просмотр полной версии : [Вопрос] столбцы в таблице



Ashmy
04.11.2017, 16:52
Здравствуйте. Насколько мне известно, нигде не указано, что использование таблиц (SQL) с большим кол-вом столбцов (две сотни, три или даже пять сотен) может привести к чему-то плохому. Правда ли это? Есть пару сотен переменных и соответственно 2 варианта их сохранения:
1) Создать в таблице для каждой переменной свой столбец (в итоге их может получится вплоть до 500) и работать с ними отдельно: изменилась одна переменная - обновили её значение в соответствующем столбце
2) Создать всего 1 столбец текстового типа (допустим, на 512 знаков) и формировать запрос с помощью цикла и strcat
Второй вариант такое себе, как мне кажется :agree:

DeimoS
04.11.2017, 23:21
Вариант 3: Для каждой системы создать свою таблицу и связать данные с таблицей аккаунтов через ID аккаунта игрока.

Можно создать хоть 1000 столбцов (в плане того, что база данных потянет такое. Делать так не нужно), но будет ли это удобно? Люди годами пытались создать удобный инструмент для хранения и работы с данными, а ты до сих пор работаешь с ним как с файлом.

Ashmy
04.11.2017, 23:26
Вариант 3: Для каждой системы создать свою таблицу и связать данные с таблицей аккаунтов через ID аккаунта игрока.

Можно создать хоть 1000 столбцов (в плане того, что база данных потянет такое. Делать так не нужно), но будет ли это удобно? Люди годами пытались создать удобный инструмент для хранения и работы с данными, а ты до сих пор работаешь с ним как с файлом.

Вся сотня-две переменных принадлежат к игроку. Никто не хранит данные о бизнесах в таблице аккаунтов, об этом речи не идёт. Я могу разделить таблицу аккаунтов на две, как ты говоришь, но есть ли в этом смысл, если таблица будет "комфортно себя чувствовать" и при наличии 300-х столбцов в себе? Для этого тема и создавалась, если 300-400 столбцов в одной таблице как-то значительно повлияют в худшую сторону на производительность, тогда однозначно стоит разделить. Так каков итог?
P.S на удобство все равно, пусть там хоть 800 столбцов будет в таблице игрока, никто лезть и менять данные в ручную там не будет, все значения меняются через мод

DeimoS
04.11.2017, 23:37
Никто и не говорит, что нужно разделять только две совершенно разные системы.
Система инвентаря, например, может так же мирно лежать в отдельной таблице и не занимать 50 столбцов, а занять всего 4:

id | account_id | item_id | value
И не нужно никаких огромных форматирований или чего-либо ещё.

В общем, просто почитай хотя бы о том, что такое Нормальная форма (https://ru.wikipedia.org/wiki/%D0%9D%D0%BE%D1%80%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D1%84%D0%BE%D1%80%D0%BC%D0%B0) и придерживайся её, если хочешь работать с базами данных правильно. Ну а ответ на твой вопрос был ещё в предыдущем моём сообщении.

Ashmy
04.11.2017, 23:44
Никто и не говорит, что нужно разделять только две совершенно разные системы.
Система инвентаря, например, может так же мирно лежать в отдельной таблице и не занимать 50 столбцов, а занять всего 4:

id | account_id | item_id | value
И не нужно никаких огромных форматирований или чего-либо ещё.

В общем, просто почитай хотя бы о том, что такое Нормальная форма (https://ru.wikipedia.org/wiki/%D0%9D%D0%BE%D1%80%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D1%84%D0%BE%D1%80%D0%BC%D0%B0) и придерживайся её, если хочешь работать с базами данных правильно. Ну а ответ на твой вопрос был ещё в предыдущем моём сообщении.

Не подумал об варианте по типу 1 предмет - 1 строка. Благодарю

DeimoS
05.11.2017, 01:28
Не подумал об варианте по типу 1 предмет - 1 строка. Благодарю

Я изначально про него и говорил. Об этом как раз и рассказывается в одной из нормальных форм, если я правильно помню.
Решено?

Ashmy
05.11.2017, 12:58
Я изначально про него и говорил. Об этом как раз и рассказывается в одной из нормальных форм, если я правильно помню.
Решено?

Да, решено