数据库表设计和关系

时间:2014-06-04 04:48:40

标签: sql database java-ee oracle11g

我有一个表可以说TBL1用于注册用户,它包含近10列。我正在将所有新用户添加到此表中。如果我为这些用户进行登录,我应该将DAO指向此TBL1用于验证用户,或者我需要有单独的表来处理登录部分。

一般存在疑问,最新方法是维护有关新用户注册的信息并使用注册信息验证用户。您如何注册并允许用户登录您的应用?插入和读取是从单个表还是从不同的表中发生的?

3 个答案:

答案 0 :(得分:2)

这是我要使用的逻辑:

  1. 我会在注册表中注册新用户,如上所述
  2. 当他们填写用户名n密码登录时,我会先在注册表或TBL1中检查该用户是否存在。如果它们存在,则使用他们首次从TBL1或注册表注册时使用的用户名和散列密码,以在客户端(即浏览器窗口)验证其用户名和密码。 如果这两个不匹配,即如果注册表中的信息与客户端登录表单中提供的信息不匹配,那么您就知道他们输入了错误的用户名或密码。
  3. 要回答您的问题,如果您已经拥有注册表,则不需要为登录用户提供单独的表。您可以在登录时使用该注册表进行验证。您可以对同一个注册表执行INSERT和READ,对于那里的两个表都不需要。希望对你有帮助!

答案 1 :(得分:1)

这取决于您对应用程序和安全性问题的要求。当然,为登录信息创建一个单独的表是一种很好的做法。

如果您有USERNAME和PASSWORD的单独表格,则可以为其设置有限的权限。因此,只有应用程序的特定部分才能访问它。如果需要,您可以更频繁地访问其他注册详细信息。

您可能有一些服务可以对用户进行身份验证。因此,您只能访问登录表中的身份验证和重置密码服务。

即使您需要在注册详细信息中添加或更改某些内容,也不会影响您的身份验证过程。

答案 2 :(得分:1)

这取决于要求和许多应用因素:

案例1:要求是具有10个表的小型数据库,然后您可以在单个表 - TBL1中维护登录和注册信息。

案例2:要求超过10-20个表需要很大,然后最好使用规范化级别,因此创建2个不同的表进行注册和登录,并使用主键映射。