我正在使用MySQL为角色扮演游戏创建角色卡数据库。我正在设置角色卡,以便每个角色都能拥有多种技能。
以下是示例卡的草图:
到目前为止,我已经设置了两个表,名为CHARACTERS和SKILLS:
CHARACTERS(id,last_name,first_name,character_name,skills)
技能(身份证,姓名,描述)
我正在寻找一种方法,让CHARACTERS表中的技能列能够以某种方式存储SKILLS表中列出的多项技能。
实现这一目标的好方法是什么?
答案 0 :(得分:3)
最好的方法是通过一个单独的表格,列出给定角色的所有技能。它看起来像这样:
CHARACTER_SKILLS(character_id,skill_id)
答案 1 :(得分:3)
您不想使用Characters表中的技能列,而是想要使用关系数据库的功能并使用Character_Skills查找表: Character_Skills(char_id,skill_id){char_id映射到Characters.id,skill_id映射到Skills.id}
然后你可以加入表格。
答案 2 :(得分:1)
CHARACTERS (char_id, last_name, first_name, character_name)
SKILLS (skill_id, skill_name, skill_description)
CHARACTER_SKILLS (char_id, skill_id, skill_level)
然后你可以这样做:
SELECT c.char_id, c.character_name, s.skill_name, cs.skill_level
FROM CHARACTERS c LEFT JOIN CHARACTER_SKILLS cs ON c.char_id=cs.char_id
LEFT JOIN SKILLS s on cs.skill_id=s.skill_id;
得到大致相同的东西:
1, ers81239, mysql, 10
1, ers81239, stackoverflow, 10
1, ers81239, funny_examples, 0
2, other_character, mysql, 4
etc.