【问题标题】:How to model a MySQL structure to deal with authentication? With users information separated如何对 MySQL 结构建模以处理身份验证?与用户信息分离
【发布时间】:2012-03-25 02:03:44
【问题描述】:

我需要帮助为我的数据库建模表结构。

我有两张桌子:老师和学生。为了处理身份验证,我有 另一个表名为:用户。我想维护有关老师和 学生分开登录信息(用户表)。

例如:

     teacher
-----------------
|  id |   name  |
-----------------
| 10  |  lorem  |
| 20  |  ipsum  |
| 30  |  dolor  |
-----------------


    student
-----------------
|  id |   name  |
-----------------
|  5  |  amet   |
|  6  |  sitt   |
|  7  |  dolum  |
-----------------

信息在两个表格中分开。 用户表:

     user
-----------------------------------------------------------------
|  id |   teacher_id  |  student_id |    login   |   password   |
-----------------------------------------------------------------
|  1  |     10        |             |  lorem_lo  |   *******    |
|  2  |     20        |             |  ipsum_lo  |   *******    |
|  3  |     30        |             |  dolor_lo  |   *******    |
|  4  |               |     5       |  amet_lo   |   *******    |
|  5  |               |     6       |  sitt_lo   |   *******    |
|  6  |               |     7       |  dolum_lo  |   *******    |
-----------------------------------------------------------------

我认为的解决方案是这样的。我问你的意见。 这是一个好的解决方案吗?

提前致谢。

P.S.:我正在使用 Mysql (InnoDB)

【问题讨论】:

    标签: mysql mysql-workbench database-design


    【解决方案1】:

    要消除用户表中的空字段,您可以这样做:

    --------------------------------------------------
    |  id  |  user  |  level  |  login  |  password  |
    --------------------------------------------------
    

    user 包含您所有的学生和教师 ID,level 包含教师的 1 和学生的 2

    在这种情况下,您可以使用级别列在您的应用中创建访问权限。

    另一种方法是使用一张桌子...将学生和教师的低谷级别分开,但这不是最佳做法。

    【讨论】:

    • 嘿嘿正是我想说的:D
    • 是的 :) 我们之间有 4 秒。我认为是最好的解决方案..因为您需要级别(角色)来访问应用程序页面和登录模块
    • 你们两个(@Th0rndike 和@Crsr)非常快。谢谢你的回答。解决方案很有趣!
    【解决方案2】:

    标准化的结构应该有点不同。我会以不同的方式创建登录表:id、person_id、角色、登录名和密码。这样您就可以只有一个 id 列,而无需分隔教师和学生。在角色栏中,您指示一个人是学生还是老师,并且每行仅使用 person_id 的外键

    【讨论】:

      【解决方案3】:

      是的,这看起来令人满意。

      登录后您需要做的就是检查您是否拥有teacher_id 或student_id 并进行适当处理。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-12-04
        • 1970-01-01
        • 1970-01-01
        • 2019-05-23
        • 2015-05-19
        • 2023-03-16
        • 2016-04-12
        • 2020-02-08
        相关资源
        最近更新 更多