0
数据库的业务表如何设计?有什么方法论吗?各位有什么资料让我学习一下,谢谢!
source link: https://www.v2ex.com/t/809758
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
40 条回复 • 2021-10-23 11:28:31 +08:00
yanzhiling2001 1 天前
wangpugod2003 1 天前
以前的单体服务 MVC 的时代和实现的微服务时代,都不同,演进很多代了。
现在的微服务时代,数据库设计是轻量级的。例如外键,以前很流行,现在基本不用了。
建议从项目实践中模仿到提升,从设计 1:1,1:n 开始,到 n:n 。很多时候不走一些弯路是不知道为什么那样设计不好。
现在的微服务时代,数据库设计是轻量级的。例如外键,以前很流行,现在基本不用了。
建议从项目实践中模仿到提升,从设计 1:1,1:n 开始,到 n:n 。很多时候不走一些弯路是不知道为什么那样设计不好。
saulshao 1 天前
数据库设计确实很大程度上依赖于经验,能提供给你的书讲的都是原则性的东西。
跟怎么用 Spring 框架类的书比较,数据库设计类的书更像是反复在给你讲什么是类,类设计的通用原则是什么。
数据库设计从理论上来说,需要深刻理解范式,然后是集合论基础。
其它我觉得就完全依赖于经验和实践了。
正如上面提到的密码单独存张表,这其实是最近这些年的实践才有的。
其实大部分的企业应用,包括 ERP 、PDM 之类的系统,基本都是密码和用户名放一张表里。
跟怎么用 Spring 框架类的书比较,数据库设计类的书更像是反复在给你讲什么是类,类设计的通用原则是什么。
数据库设计从理论上来说,需要深刻理解范式,然后是集合论基础。
其它我觉得就完全依赖于经验和实践了。
正如上面提到的密码单独存张表,这其实是最近这些年的实践才有的。
其实大部分的企业应用,包括 ERP 、PDM 之类的系统,基本都是密码和用户名放一张表里。
loux 1 天前
@kanezeng 那属于业务上的扩展,第三方登录分表存储,密码不属于第三方在没有业务需求的情况下放一张表里没有什么问题,他那句话说的好像密码跟用户信息放一起是无法理解的事情一样。
tabris17 1 天前
tabris17 1 天前
@kiripeng 脱敏只是一部分原因。或者说是附加的额外优势,如果 User 和 Authentication 系统分开(逻辑上和数据上都分开),甚至可以做到 password 数据不落数据库,无论是用特殊硬件还是保密级别更高的数据库,自由度非常高
liuzhedash 1 天前
loux 1 天前
@tabris17 用户名,手机号,邮箱,密码都是用户输入的,属于用户信息,用户可以随意修改,放在用户表并没有什么问题。比对密码的认证逻辑和第三方平台的认证逻辑完全不同,可以根据登录参数去区分认证方式。用户可操作的信息为什么要分开存储,在业务上不是麻烦自己吗?如果你的认证系统和业务系统是分开的(逻辑上和数据上都分开),用户需要修改这些信息的时候,你还要在认证系统开发额外的修改业务吗?
sy20030260 1 天前
只考虑「数据库设计」意义不大,得放在「系统设计」这个大问题下面来思考。没有什么 app 是只有数据库就能 run 的,同理数据库设计和 API 设计、架构设计、业务逻辑设计等问题都是无法分开讨论的。所以大厂面试考的都是系统设计题,而不是数据库设计题
tabris17 1 天前
@loux 这个副作用的确存在。但是邮箱手机解绑和重新绑定本身就是身份认证系统的业务,而不是用户系统的业务。认证系统重新绑定邮箱和手机后,可以通知用户系统更新 user profile 里的数据。用户系统不用验证邮箱和手机的惟一性,交给认证系统处理就好了
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK