mysql 的表设计请教!

mysql 的表设计请教!

User 表: 用户总表,记录所有用户,登录用,

第一,每个用户下,又有很多分表,
分表怎么关联User表中的用户id? 不是字段关联,而是整个表关联到 User 表 中的某id
当前的做 法是,把分表的表名后缀 上加上用户id, 通过表名的后缀来实现操作,
生产环境中,这种需求是怎么个弄法?

第二,上面这种用户下有分表的设计中, 到底用不用外键约束?
很显然,前后端后来也可以处理关系约束,但我不确定,是在mysql 表设计时增加外键进行约束,还是交给前后端处理?

就是改表名,做配置,你做的没问题。
生产环境也一样,做配置就行,人员id根据某种算法关联到某张表上。
至于你说的外键约束,不需要,生产环境尽量都不要放主外键约束。用代码来约束就好。
况且你这个表都关联到人了,你还要外键做什么?表中有一条固定的数据?
这没有任何意义。
另外这个分表有点奇怪,除非你单人数据量极大,否则真没必要这么设计,主从表就够了

分表在数据量很大的情况下,才会考虑分表。
不知道你的业务是为什么要分表。

每个用户分表字段不统一吗?为什么要维护那么多表,一般是维护一个表就行的,你这种设计也只能在表名上做文章了,貌似也无法设置外键约束了吧,可以考虑在后端通过代码进行约束

业务中的外键逻辑交由后端处理
级联什么的更是别用

1.一个用户关联很多表,无法通过mysql约束;
2.一般不做约束,都是通过后端程序关联查询,处理的。
3.建议你整理下表关系,可以通过画图来梳理(手画,或软件画)

1、使用动态表名,比如user表的一个数据id为123,分表表名sub_user_123,生产上可以这样搞。这样可以明显降低表的数据量,但是缺点也很明显,表很多,不能直接关联查询等。mybatis plus有个插件还专门去做了动态表名的。
2、不建议用外键约束

如果你按用户id做分表了,就没必要用外键约束了,意义不大

首先你要确定的时候,你的数据量是否有必要做分表,如果要做分表,那么可以考虑采用哪种分表当时,可以按用户id做做分表,这种分表就不必要采用外键了,如果采用的是按年份分表,可以采用用户id作为外键关联了
如果采用用户id作为表名分表,就无法直接用关联查询,看你自己作何选择吧

首先你的第一种方案理论上可以实现,但是有一点不明白的是为什么采取这种设计,假如就像你说的,一个用户对应一个邮箱系统,完全可以通过中间关联表实现,没必要设计那么多表,否则你这种设计方案每增加一个用户就要加表,代码可能就要修改,可维护性太差,通过中间表无非就是多一条数据问题,扩展性比较好

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632