多步骤注册中遇到的数据表字段设计为 null 的问题

场景

注册分为两个步骤:

  • 注册页面:填写手机号,获取验证码,点击注册按钮,会跳转完善注册信息页面
    多步骤注册中遇到的数据表字段设计为 null 的问题
  • 完善注册信息页面:完善用户详细信息。其中有一个重要字段(设计初衷是加唯一索引)

多步骤注册中遇到的数据表字段设计为 null 的问题

(注:截图是美团的页面,我是在模仿美团设计)

问题:

注册的第一个步骤:点击注册时,会创建一条用户数据,因为这是只有一个手机号,那么存储用户的详细信息字段是要需要设置成允许 NULL吗?如果是要设置成 NULL, 那么完善用户信息页面 其中的一个重要字段就没办法设置唯一索引了,所以我想请教一下…

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
leo
最佳答案

允许 null 的字段可以设置唯一索引

5年前 评论
matteao (楼主) 5年前
讨论数量: 8

放在另一个表中???

5年前 评论
matteao (楼主) 5年前
  • 补充信息放在其他表中 使用外键关联 这样就可以创建唯一索引
  • 在一个表中,但是在保存手机号的时候随机字符串更新到你那个重要字段,待用户补充信息提交后在更新为用户填写的
  • 在一个表中,但是不设置为唯一索引

另外你说的重要字段是什么呢?除了登录名,也就是手机号外,其他还什么信息字段是唯一的呢?

可以根据自己的业务选择上面的方案,如果和个人信息或者账号信息关联性不强,建议放到其他表中也未尝不可。

5年前 评论
24K大白羊 (作者) 5年前
matteao (楼主) 5年前
24K大白羊 (作者) 5年前
matteao (楼主) 5年前

用户账号授权表和用户基本信息分开用两个表存,注册页面的时候将手机号和授权加入到用户账号授权表中,填写详细信息的时候关联一下授权表的用户就好了

5年前 评论
matteao (楼主) 5年前
leo

允许 null 的字段可以设置唯一索引

5年前 评论
matteao (楼主) 5年前

不愧是leo大神,一下就说出了别人没指出的错误描述,就是允许 null 的字段可以设置唯一索引

单列索引和联合索引都是可以的,但是is not null的时候不走索引。考虑到楼主应该不知道,就友情提示一下。

5年前 评论
matteao (楼主) 5年前

@L学习不停@leo , @zpers, @largezhou , @24K大白羊 如果设计在一张表里, 第一步创建数据时,其他所有字段(假如说有10个左右的字段)都设置为允许 NULL, 是否合适?

5年前 评论
leo

@matteao 没有任何问题

5年前 评论
matteao (楼主) 5年前

数据可以先放到缓存里面,最后一步校验通过再存数据库。

5年前 评论
matteao (楼主) 5年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!