V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
sun019
V2EX  ›  问与答

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

  •  
  •   sun019 · 2013-05-28 10:31:29 +08:00 · 3349 次点击
    这是一个创建于 4197 天前的主题,其中的信息可能已经有所发展或是发生改变。
    程序是php+mysql
    头头领导说 一个产品可能属于多个分类哦

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

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

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

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

    中间表那个靠谱
    davepkxxx
        6
    davepkxxx  
       2013-05-28 11:45:21 +08:00
    @fangzhzh 我的第二种办法和 @sun019 的办法差不多,会稍微麻烦一点,对查询很友好,尤其是在你缓存了所有的分类之后。
    davepkxxx
        7
    davepkxxx  
       2013-05-28 11:46:36 +08:00
    我的建议是一旦你觉得关联查询过于复杂,就可以把第一条和第二条一起执行。
    fangzhzh
        8
    fangzhzh  
       2013-05-28 11:50:12 +08:00
    @davepkxxx 目测增查的操作最多, 删除应该不是太大问题.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2273 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 01:43 · PVG 09:43 · LAX 17:43 · JFK 20:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.