2016-08-05 2 views
0

Я работаю над программой, которая включает в себя множество данных, и мне интересно, какая будет лучшая структура таблицы.Предпочтительная структура таблицы

Моя идея - сохранить всю статистику игрока в базе данных. Статистика, названная stat_type, может измениться, что означает, что в определенный момент можно добавить новый stat_type.

Эта структура была моей первой идеей.

Колонны: int playerID, VARCHAR stat_type, DOUBLE stat_value

Пример строки будет: 1, "kills", 15

Эта структура была моя вторая идея.

С этой структурой возможно, что новый столбец будет добавлен в определенный момент. Эта структура потребует меньше строк, чем предыдущая структура, но в конце будет больше столбцов.

Колонны: int playerID, DOUBLE kills

Пример строки будет: 1, 15

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

+2

Вопросы, которые задают «, где я начинаю ", как правило, слишком широкие и не подходят для этого сайта. У людей есть свой метод для решения проблемы, и из-за этого не может быть корректного ответа. Дайте хорошее чтение [** Куда начать **] (// meta.programmers.stackexchange.com/questions/6366/where-to-start/6367#6367), затем напишите сообщение. – FrankerZ

ответ

0

Option1 - это то, что вы хотите. Вы можете добавить любую статистику, которую вы хотите позже, без изменения дизайна вашего БД или логики вашего приложения.

Вариант2, когда вы меняете схему, вы должны проверить все, что связано с этой таблицей, все еще работают после этих изменений, большой кошмар.

пример с option1: можно добавлять новые статистику без изменения кода

data = getdata_from_db(); 
foreach item in data 
{ 
    <th> item.stat_type </th> 
} 

пример с option2: если добавить новые статистики необходимо обновить код, чтобы включить этот стат

data = getdata_from_db(); 
<th> item.needKnowFieldName1 </th> 
<th> item.needKnowFieldName2 </th> 
<th> item.needKnowFieldName3 </th> 
+0

Я не понимаю, почему добавление нового столбца вызовет так много проблем. Можете ли вы уточнить? –

+0

проверить мой код редактирования. –

Смежные вопросы