新手问题 数据库表关系问题

dxwts · 2013年12月09日 · 最后由 dxwts 回复于 2013年12月09日 · 2359 次阅读

各位有两个表的关系我不清楚怎么整理好,麻烦各位帮忙看看。原本我有 product 的表,需要添加供应商和价格信息,所以我打算添加供应商的表,问题是 product 对应多个 manufacture,manufacture 对应多个 product,因为各个 manufature 提供的价格会不一样,所以 product 对应多种价格。原本我想把 price 分离出来单独建一个表,不过我都不知道为什么想这么干,这里怎么处理好?

product, manufacture, product_manufacture (多对多,保存 price)

M:M : has_many :through, has_many :through 1: M : has_many, belongs_to

#1 楼 @zhangjinzhu 抱歉我提供的信息有误,因为每个 manufature 提供的价格可能不一样,所以 product 应该对应多个价格,而 manufature 对应该 product 的价格只有一个,所以 price 应该属于那个表,manufacture 吗?

还应该是上面的结构,我给你举个例子吧:

商品表:
thinkpad x1, Macbook Air

供应商表:
京东, 一号店, 苏宁

商品-供应商表:
(商品ID),(供应商ID),(价格)。。。
thinkpad x1,  京东, 10000
thinkpad x1,  一号店, 11000
thinkpad x1,  苏宁, 12000
Macbook Air, 京东, 1
Macbook Air, 一号店, 2
Macbook Air, 苏宁, 3

上面的例子最好加一个(商品 ID)+(供应商 ID)的唯一性校验

#4 楼 @zhangjinzhu 哦,是不是 商品 has_many 商品 - 供应商 , 供应商 has_many 商品 - 供应商

#5 楼 @zhangjinzhu #2 楼 @springwq 大概明白了,谢谢二位

嗯,再就是 has_many, has_many through 了

#8 楼 @zhangjinzhu has_many :through 这个还不清楚什么意思,所以没理解 2 楼的意思,我看看它的资料

#8 楼 @zhangjinzhu 我用 mongid 没有 has_many :through 的功能,有没有替代方案?

@dxwts 隐约感觉你用 mongodb 做这个网站是选型错误。。。 不过你可以参考下下面的几个文章怎么做:

http://stackoverflow.com/questions/7000605/how-to-implement-has-many-through-relationships-with-mongoid-and-mongodb

http://mongomapper.com/documentation/plugins/associations.html

http://mongoid.org/en/mongoid/docs/relations.html

当然如果是 mongodb 的话,这样子的实现也不一定是最佳实现,可能是把价格信息保存在 product 表里更合适些 http://ruby-china.org/topics/15720

#11 楼 @zhangjinzhu 恩,谢谢建议,实际上不是网站,是个简单的管理系统,可能用关系数据库更合适,不过说到底还是我太菜,我是第一次做 web 的东西,没什么基础,能否给个建议是否需要换数据库?

对文档数据库认识不深的话,更不建议用了,如果是刚刚开始的项目,换关系数据库得了

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册