由于最近游戏项目数据库需求,需要设计一些一对多和多对多的数据库表,平时呢,用别人的表多,很少自己设计过,虽然大学那会练习过,貌似这个是数据库最基础的吧?
好了圆规正传!
这里我只是简单的谈谈一对多和多对多的设计基本方法:
《1》一对多
外键应该放到“多”的那个表中,比如一个零件,他就有可能有多个“类别”,我们可以在零件表中根据一个零件Id 查询到某一个零件,然后根据这个零件的“类别”,在类别表中查询类别的属性等等。数据库设计如下:
零件表:
零件ID 零件名称 零件形状 零件重量 零件类别(主要是材质方面的)
类别表
零件类别 密度 元素名称 发现者
以上就是一对多的情况。
多对多就比较复杂了,需要添加一张关系表。
例如上次我笔试一道题目,就有这么一个关系:掉落物品和背包的关系。一种物品可能在多个背包里面存在,一个背包里面可能存在多种物品。而这里的背包呢,他有可能在地上有多个。那这里就要查询某个包里面的某个物品的属性或者这个物品在世界上总共有多少?
什么都不说了,稍微东数据库数据的人一看就知道怎么设计!但是实际工作就是这么样子的,忘了的朋友赶快补补课吧。我给出一个我认为正确的表结构。
物品表
物品名称 物品掉落概率 物品价格 物品生产时间 市场价格
背包表
背包id 背包容量 背包颜色
关系表
id 背包id 物品名称 物品数量
通过查询关系表的id,可以分别查询到背包和物品,实际上就是将物品表和背包表的外键分别放到了关系表中。
以上总结,有可能由错误,以后在多学点后在说吧。