V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MySQL 5.5 Community Server
MySQL 5.6 Community Server
Percona Configuration Wizard
XtraBackup 搭建主从复制
Great Sites on MySQL
Percona
MySQL Performance Blog
Severalnines
推荐管理工具
Sequel Pro
phpMyAdmin
推荐书目
MySQL Cookbook
MySQL 相关项目
MariaDB
Drizzle
参考文档
http://mysql-python.sourceforge.net/MySQLdb.html
darasion
V2EX  ›  MySQL

多对多关系中,除了传统范式的关联表,还有别的什么设计?

  •  
  •   darasion · 2013-03-17 13:37:32 +08:00 · 3983 次点击
    这是一个创建于 4267 天前的主题,其中的信息可能已经有所发展或是发生改变。
    比如传统的关联表设计:

    post 表:
    id, title, content

    tag 表:
    id, name

    post_tag 表:
    post_id, tag_id

    --
    在某些特定情况下(例如:性能是主要瓶颈时)有没有更好的设计?

    都有哪些情况不应该用这种设计?
    第 1 条附言  ·  2013-04-20 23:01:29 +08:00
    3 条回复    1970-01-01 08:00:00 +08:00
    alsotang
        1
    alsotang  
       2013-03-17 17:41:46 +08:00
    我也想知道。。。不过貌似没人回答哈。。。
    keakon
        2
    keakon  
       2013-03-17 18:09:04 +08:00
    如果你的 tag 的范围是能预先确定,并且种类不超过 64,可以用 SET 类型。
    如果 tag 不需要重命名,且使用 PostgreSQL 的话,可以用数组类型。

    不过在 tag 表较小,post_tag 表正确设置了索引的情况下,还存在性能问题,就表示你的业务模型不适合关系型数据库。
    darasion
        3
    darasion  
    OP
       2013-04-20 22:59:30 +08:00
    @keakon 多谢多谢.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3006 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 14:05 · PVG 22:05 · LAX 06:05 · JFK 09:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.