Я пытаюсь создать базу данных, из которой я могу получить данные для хранения в следующем объекте JSON:
{
"races": [
{
"name": "Mountain Dwarf",
"asi": {
"str": 2,
"dex": 0,
"con": 2,
"int": 0,
"wis": 0,
"cha": 0
},
"proficiencies": {
"languages": [ "Common", "Dwarvish" ],
"armor": [ "light", "medium" ],
"weapons": [ "battleaxe", "handaxe", "throwing hammer", "warhammer" ],
"tools": {
"choose": 1,
"tools": [ "smith's tools", "brewer's supplies", "mason's tools" ]
}
},
"darkvision": 60
},
{
"name": "Wood Elf",
"asi": {
"str": 0,
"dex": 2,
"con": 0,
"int": 0,
"wis": 1,
"cha": 0
},
// etc.
}
]
}
Мне гораздо удобнее хранить данные в объектах JSON, чем в базе данных.поэтому я пытаюсь думать задом наперед. Как бы я мог представить этот "многослойный" объект в виде таблицы SQL?
My Best Guess
Из проведенного мной исследования яЯ думаю, что хороший способ сделать это - создать несколько разных таблиц и затем соединить их, чтобы получить всю необходимую информацию.
Пример 1
Например, у меня может быть race
таблица и таблица race_asi
с семью именами столбцов: race_id
, str
, dex
, con
, int
, wis
и cha
, с рядом для каждой расы.
Пример 2
Я мог бы также иметь таблицу weapons
и таблицу race_proficiency_weapons
, где последняя представляет собой таблицу соединения между таблицами races
и weapons
, поэтому она имеетдва столбца: race_id
и weapon_id
.
Я рассмотрел только одну таблицу race_proficiency_weapons
со столбцом race_id
и столбцом для каждого типа оружия, где данные являются просто логическим значением, которое указываетесть ли у расы такой уровень мастерства, но я хочу, чтобы пользователи программы, которую я пишу, могли добавлять дополнительные типы оружия наон летает (в отличие от ASI, упомянутых в примере 1).
Это подходящее решение для хранения этих данных?Опять же, я немного новичок в SQL, поэтому есть какие-то проблемы с этим решением, которые я не вижу?Если это так, что будет подходящим решением?