已关闭。此问题为opinion-based。当前不接受答案。
**想要改进此问题吗?**请更新此问题,以便editing this post可以用事实和引文来回答。
22小时前关门了。
Improve this question
我正在为RestApi开发一个Sping Boot 应用程序,我想这个问题与Spring Boot无关,但是,我想指出这一点。无论如何,我有一个注册用户的应用程序。注册过程如下:
1.提供电子邮件和密码
1.验证您的电子邮件
1.填写其余部分(用户名、全名、性别等)
我有一个名为app_user
的表。在这个表中,email
,password
,username
,gender
等是非空属性。
问题是这样的:在第一步中,用户只提供了email
和password
。我需要将这些信息保存在表中。然而,由于username
,gender
等也是必需的属性。当我试图保存它们时,我得到了一个异常。保存这些信息后,我要求电子邮件验证,然后我需要剩下的部分。
我通过将app_user
表分为两部分找到了解决方案。第一个表,user_id
,email
,password
。第二个表,user_id
,username
,gender
,fullName
,createdAt
等。
实际上,将同一个实体的信息保存在两个不同的表中让我很困扰。我对这个解决方案不满意。所以,我要求一个更好的解决方案,或者这是正确的方法吗?
1条答案
按热度按时间pb3skfrl1#
很难给予一个非常好的答案,因为它严重依赖于您的实际业务逻辑。但是对于这种多步骤流程,最终所有字段都是强制性的,有两种方法可以做到这一点:
1.将每一步的结果保存在一个单独的表中(就像你已经做的那样)。
1.保持一些字段为空,并根据哪些字段为空,哪些不是,你可以推断出用户已经得到了哪一步(因此,如果它不够远,就阻止进一步的访问),或者保持某种特殊字段的状态,用户已经得到了。
对于选项二,无论您实际上如何解决它,许多验证和业务逻辑都将在应用程序的代码级别中。
另外,选项2的缺点是,将身份验证凭据和常用配置文件信息混合使用可能是不好的做法。不必如此,但您必须小心,从业务流程的数据库中获取和更新的内容(常用配置文件更新vs密码更新或身份验证)。