Как правильно создать базу данных, чтобы она была хорошо структурированной?

Как лучше организовать структуру базы данных для хранения фраз героев в игре, чтобы обеспечить понятность и легкость отслеживания при большом объеме записей: создать одну таблицу для всех героев с полем имени героя и его фразой, или создать отдельную таблицу для каждого героя с полями для фразы и уникальным ID?
  • 29 марта 2024 г. 22:49
Ответы на вопрос 3
Для создания хорошо структурированной базы данных для хранения фраз героев в игре, лучше использовать подход с отдельной таблицей для каждого героя. Это позволит оптимизировать работу с базой данных и обеспечить более эффективное отслеживание и управление данными.

Каждая отдельная таблица будет содержать поля для фразы героя и уникального ID, который может использоваться для идентификации конкретного героя. Такой подход позволит легко добавлять, обновлять и удалять данные по каждому отдельному герою без необходимости изменения структуры всей базы данных.

Это также упростит выполнение запросов и фильтрацию данных, так как каждая таблица будет содержать информацию только о конкретном герое. Кроме того, при большом объеме записей такая структура базы данных будет более масштабируемой и эффективной с точки зрения производительности.
С точки зрения адекватного проектирования баз данных — однозначно первый вариант (и, желательно, с индексом по имени героя). А если очень хочется просматривать отдельные выборки по героям без дополнительных действий — использовать для этого такую штуку как Views, если база их поддерживает и позволяет редактировать. Но вообще, во всех нормальных менеджерах баз данных есть возможность выборки с фильтрацией по содержимому поля, и лучше использовать их.
<blockquote><br/>
Но есть "проблема". При добавлении новой фразы для героя, она всегда будет в конце таблицы т.к. это новая запись.<br/>
Т.е. при дополнении таблицы фразами - для 1 героя, для второго, придумали новую фразу для 1 героя, они будут идти в разнобой. Это визуально не удобно для отслеживания, понимания, не красиво.</blockquote> <br/> Это не проблема. При выборке фраз ты можешь спокойно указать нужный порядок. <br/> <br/> База данных - это не эксель, и даже в экселе это не было бы проблемой благодаря сортировкам. <br/> <br/> <blockquote>Первое что приходит на ум - Одна таблица для всех героев с 3 полями<br/>
id - автоинкремент<br/>
имя героя<br/>
фраза героя</blockquote> <br/> Лучше для героев завести отдельную таблицу, а в этой таблице держать только id героя. <br/> <br/> <blockquote>Вариант 2. Для каждого героя своя таблица. Таблица Hero1 Hero2 и т.д.<br/>
id - автоинкремент<br/>
фраза героя<br/>
И далее, делать выборку всех записей из таблицы т.к. в ней фразы для нужного героя.<br/>
Просто, интуитивно понятно, все фразы идут "друг за другом", но много таблиц.</blockquote> <br/> Из такой базы нереально будет программно вытаскивать данные. <br/> Тебе придётся для каждого героя свой запрос заводить и кучу запросов у которых различается только имя таблицы. <br/> Такие запросы даже шаблонизировать не получиться, тк подготовленные запросы в бд только с аргументами работают, а имя таблицы аргументом не является. <br/> <br/> Тебе должно быть пофиг, как эти данные структурируются с точки зрения человека. <br/> Структурируй с точки зрения запросов и программы, которая будет с этими данными работать.
Похожие вопросы