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
totoro52
V2EX  ?  MySQL

前台多用户类型该如何设计数据库呢?

  •  1
     
  •   totoro52 · 2020-10-15 11:09:06 +08:00 · 3278 次点击
    这是一个创建于 1300 天前的主题,其中的信息可能已经有所发展或是发生改变。

    腾讯云最新优惠活动来了:云产品限时1折,云服务器低至88元/年 ,点击这里立即抢购:9i0i.cn/qcloud,更有2860元代金券免费领取,付款直接抵现金用,点击这里立即领取:9i0i.cn/qcloudquan

    (福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

    目前前台用户共有 3 个角色类型,以下我们统称为普通会员,高级会员,超级会员
    他们共有几个相同的字段:账号,手机号,性别等等,但其中一些角色拥有自己特定的属性
    所以我现在想要不要分表设计,统一用 user 表存全部用户,包括他们的角色类型,然后在建两个高级会员和超级会员的信息表去做其他属性保存
    求做过的大佬给个好点的设计方案

    wangritian
        1
    wangritian  
       2020-10-15 11:17:09 +08:00
    你的方案没问题,如果高级 /超级会员的附加属性没有搜索需求,也可以丢 user 表的一个 json 字段
    totoro52
        2
    totoro52  
    OP
       2020-10-15 11:26:04 +08:00
    @wangritian 有附加搜索需求的, 我想的是在建一个用户类型表,user 包含类型 Id 然后查询的时候连表带上需要的字段 但感觉有点繁琐
    hytex
        3
    hytex  
       2020-10-15 11:29:01 +08:00
    是否还要考虑会员失效,其他表也要对应删除的情况呢。特定属性如果不多的话,我个人比较喜欢放在一张表里
    teddy2725
        4
    teddy2725  
       2020-10-15 11:30:34 +08:00
    把 user 和 profile 分开,普通会员 高级会员 和超级会员用 role 区分
    totoro52
        5
    totoro52  
    OP
       2020-10-15 11:31:54 +08:00
    @hytex 对 我想到的就是这个 如果放其他表 那用户被删掉的时候 其他表也要做相应操作 不过目前是实现的是软删除 所以应该不会涉及到其他表
    1010011010
        6
    1010011010  
       2020-10-15 11:42:59 +08:00
    多个 1 对 1 我是分多个子表,子表主键不自增用主表主键,主表做状态标识
    vate32
        7
    vate32  
       2020-10-15 12:18:02 +08:00
    经典五张表:用户表,角色表,权限表,用户与角色关联表,角色与权限关联表
    totoro52
        8
    totoro52  
    OP
       2020-10-15 12:23:21 +08:00
    @vate32 这里不是权限的问题 而是用户类型包含的属性的问题
    armoni
        9
    armoni  
       2020-10-15 12:45:34 +08:00
    都做到一张表里,根据不同的权限提取不同的字段
    dk7952638
        10
    dk7952638  
       2020-10-15 13:52:24 +08:00
    如果只是多几个字段不要分表,如果区别很大再考虑
    如无必要,勿增实体
    libracloud
        11
    libracloud  
       2020-10-15 13:57:34 +08:00
    我是直接一个表,附加信息用 json 保存的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   6142 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 02:47 · PVG 10:47 · LAX 19:47 · JFK 22:47
    Developed with CodeLauncher
    ? Do have faith in what you're doing.


    http://www.vxiaotou.com