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 · 3468 次点击
    这是一个创建于 1524 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前前台用户共有 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   ·   实用小工具   ·   5773 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 01:41 · PVG 09:41 · LAX 17:41 · JFK 20:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.