Database 表与其他表的关系,如果其他表相关,我是否应该只连接一个表

Database 表与其他表的关系,如果其他表相关,我是否应该只连接一个表,database,normalization,Database,Normalization,我有四张桌子,分别是: tbl_users tbl_college tbl_courses tbl_sections tbl_用户当然包含,用户名,密码 如果我想获取有关某个用户的所有信息,包括: 他/她属于哪所大学(例如工程学院或工商管理学院) 他/她正在修什么课程(例如土木工程理学学士或营销理学学士) 他/她进入哪个部门(例如CBC或ITED) 如果tbl\u课程设置如下: tbl_courses (id, course_name, college_id) tbl_sections(id

我有四张桌子,分别是:

tbl_users
tbl_college
tbl_courses
tbl_sections
tbl_用户
当然包含,
用户名
密码

如果我想获取有关某个用户的所有信息,包括:

  • 他/她属于哪所大学(例如工程学院工商管理学院

  • 他/她正在修什么课程(例如土木工程理学学士或营销理学学士)

  • 他/她进入哪个部门(例如CBCITED

  • 如果
    tbl\u课程
    设置如下:

    tbl_courses (id, course_name, college_id)
    
    tbl_sections(id, section_name, course_id)
    
    其中,
    college\u id
    指的是
    tbl\u college.id

    tbl_部分的设置如下:

    tbl_courses (id, course_name, college_id)
    
    tbl_sections(id, section_name, course_id)
    
    其中,
    course\u id
    指的是
    tbl\u course.id

    我应该如何选择与用户相关的所有信息,在本例中,这些用户是具有
    用户名
    密码
    学院
    课程
    部分

    我想的是,我可以创建另一个表,即:
    tbl\u user\u section
    ,如下所示:

     CREATE TABLE tbl_user_section (user_id INTEGER NOT NULL, section_id INTEGER NOT NULL,
     FOREIGN KEY user_id REFERENCES users(id),
     FOREIGN KEY section_id REFERENCES sections(id))
    
    这样我就可以有一张桌子,上面放着谁在哪个区域。我认为,通过这样做,我可以轻松地进行连接以获取相关信息:

    SELECT tbl_users.username, tbl_sections.section_name FROM tbl_users 
    INNER JOIN tbl_user_section ON tbl_users.id = tbl_user_section.user_id 
    INNER JOIN tbl_sections ON tbl_sections.id = tbl_user_section.section_id
    
    我最近在这种设置中遇到的问题是,如果某个用户还不在某个分区中,当我尝试使用上面的代码查询所有用户时,该用户将不会被选中,否则不会显示

    同样,有了这种设置,我可能也能做到这一点

    SELECT tbl_users.username, tbl_sections.section_name,
    tbl_courses.course_name, tbl_colleges.college_name FROM tbl_users 
    INNER JOIN tbl_user_section ON tbl_users.id = tbl_user_section.user_id 
    INNER JOIN tbl_sections ON tbl_sections.id = tbl_user_section.section_id
    INNER JOIN tbl_courses ON tbl_courses.id = tbl_sections.course_id
    INNER JOIN tbl_colleges ON tbl_college.id = tbl_courses.college_id
    
    获取查询中包含的信息

    您认为从我创建的设置中还可以看到哪些其他问题

    在“tbl_用户”中只包含
    section_id
    字段,而不是像我那样创建一个单独的表,这是否更明智

    如果我有不同类型的用户,我应该做同样的事情(为用户类型分开一个表)并有一个
    tbl\u用户类型
    ,还是将它们放在同一个表中
    tbl\u用户


    假设这是一个大项目,您会选择什么?

    如果由于一个或多个表中缺少用户而无法让用户显示,您可以使用
    外部联接使其显示,这些表中的列中的值为空。因此,没有分区的学生分区名称的值为空,但所有其他信息仍然完整。

    +1用于回答和消除我的困惑。等待更多答案