Ваши сомнения могут быть правильными.По моему мнению, база данных - неправильный способ организовать эти данные.Каждый новый вид достижений, который вы хотите создать, будет добавлять дополнительные столбцы в вашу базу данных, и большинство достижений не будет использовать большинство столбцов.Возможно, будет более полезной более гибкая структура данных, которая не предполагает, что для каждой записи будут использоваться все возможные критерии достижения сразу по умолчанию.Большинство языков поддерживают JSON , поэтому я предлагаю вам использовать это.Структура может выглядеть примерно так:
[
{
"name": "Medal One",
"requirements": {
"coursesCompleted": 5,
"scoreMin": 90
}
},
{
"name": "Medal Two",
"requirements": {
"specificCoursesCompleted": [
"Course 1",
"Course 2"
],
"scoreMin": 85
}
},
{
"name": "Medal Three",
"requirements": {
"generalRankingMin": 5
}
},
{
"name": "Medal Four",
"requirements": {
"scoreMin": 5000
}
}
]
Здесь вы можете увидеть, как типы критериев иногда используются повторно, но их можно опускать, когда они не нужны, и новые можно добавлять к нескольким достижениям без раздуванияостальная часть набора данных также.
PS: я сделал названия критериев очень многословными для демонстрационных целей;сокращать их или не использовать в реальных условиях - по выбору.