数据结构 一对多 改成 多对多,该怎么处理额_

2013-05-28 10:31:29 +08:00
 sun019
程序是php+mysql
头头领导说 一个产品可能属于多个分类哦

OK我这苦X程序员 只有听领导的了

一个产品可以属于多个分类

以前就建了个cat表和goods表,用cat_id 来关联

现在我完全迷茫了,结构完全变了啊
3349 次点击
所在节点    问与答
8 条回复
fangzhzh
2013-05-28 10:44:28 +08:00
如果主要操作是顺序访问, 商品中带个cate链表就ok了
sun019
2013-05-28 10:50:56 +08:00
@fangzhzh 涉及到增删改 查
初步想的 goods 表的 cat_id字段 改成varchar 用|隔开cat_id
davepkxxx
2013-05-28 11:00:09 +08:00
那就只有建立一个中间表,存放产品和分类的关系。
表里一般至少两个字段,产品主键和分类主键。
davepkxxx
2013-05-28 11:02:57 +08:00
另一个办法就是在产品表和分类表里都各自增加一个字段,用来存放对方的主键集合。
fangzhzh
2013-05-28 11:42:23 +08:00
@sun019 你的方法
@davepkxxx 你的第二种方法怎么删除呢, 要解析字段,然后从varchar删除你想要删的字段, 这估计会很麻烦

中间表那个靠谱
davepkxxx
2013-05-28 11:45:21 +08:00
@fangzhzh 我的第二种办法和 @sun019 的办法差不多,会稍微麻烦一点,对查询很友好,尤其是在你缓存了所有的分类之后。
davepkxxx
2013-05-28 11:46:36 +08:00
我的建议是一旦你觉得关联查询过于复杂,就可以把第一条和第二条一起执行。
fangzhzh
2013-05-28 11:50:12 +08:00
@davepkxxx 目测增查的操作最多, 删除应该不是太大问题.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/70373

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX