Представлять сложный объект JSON со схемой базы данных - PullRequest
0 голосов
/ 21 февраля 2019

Я пытаюсь создать базу данных, из которой я могу получить данные для хранения в следующем объекте 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, поэтому есть какие-то проблемы с этим решением, которые я не вижу?Если это так, что будет подходящим решением?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...