我正在尝试创建一个数据库,我可以从该数据库中获取要存储在以下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表?
从我所做的研究来看,我认为解决此问题的一种好方法是建立几个不同的表,然后将它们合并以获取我需要的所有信息。
例如,我可能有一个race
表和一个具有七个列名的race_asi
表:race_id
,str
,dex
,{{1 }},con
,int
和wis
,每场比赛都有一行。
我可能还有一个cha
表和一个weapons
表,其中后者是race_proficiency_weapons
和races
表之间的联接表,因此它有两列:weapons
和race_id
。
我考虑过只有一个weapon_id
表,其中有一个race_proficiency_weapons
列和每种类型的武器的列,其中的数据只是一个布尔值,指示种族是否具有这种熟练程度,但是我希望我正在编写程序的用户能够即时添加其他武器类型(与示例1中提到的ASI不同)。
这是存储此数据的合适解决方案吗?再说一次,我有点SQL菜鸟,所以这个解决方案有没有出现的问题?如果是这样,什么是合适的解决方案?