我为商店用户,学生和考官创建了3张桌子。
用户表包含登录详细信息
posts
如果user_type == 2或3,则根据该值,获取user_type_id字段 学生ID或考官ID,如果user_type == 1则值== 0。
学生表包含学生详细信息
id
name
email
password
user_type (3 user types: 1 - administrators, 2 - students, 3 - examiners)
user_type_id
审查员表包含审查员详细信息
id
name
age
birthday
我的问题是,使用上述方式链接用户,学生和审查员是否可以?
如果没有,请提出建议。谢谢。
答案 0 :(得分:1)
首先:您的数据模型需要一些改进。
其次:提供数据模型
我们在用户和另外两个实体(学生和考官)之间建立了关系。也许将来其他实体会添加到此列表中。
我们有两种关系:
用户与学生之间的一种关系以及用户与审查员之间的另一种关系
这些关系是一对一的。例如,每个学生都有一个用户,每个用户只能设置一个学生。用户和检查之间的类似声明。
在一对一关系中,我们有两个解决方案:
1-通过1-1关系中第1侧实体的主键作为外键
方2的实体。
以1-1关系将第2侧实体的主键作为外键
第1方的实体。
两种解决方案都是正确的。所以我们有两种解决方案:
解决方案1 :将用户ID作为外键传输给Student和Examiner。在此解决方案中,我们可以轻松找到特定学生或特定考官的每个用户ID。 但此解决方案的难点在于找到基于用户ID的学生或考官。答案是:请注意,我们为每个用户ID都有用户类型。因此,根据用户ID的用户类型,我们知道要搜索哪个表(学生或考官)。
解决方案2 :将Student和Examiner ID作为外键传输到用户。意味着User Entity有2个外键。第一个是学生ID,第二个是考官ID。这种解决方案非常有效。但它与AA模块(认证和授权模块)的模块化冲突。当与User有关的其他表(Student,Examiner,...)的数量为HIGH时,会出现另一个问题。无论如何,在小型信息系统中我们可以使用这个解决方案。