MySQL:存储用户类型和用户类型id的最佳方式是什么?
我为商店用户、学生和考官创建了3个表 用户表包含登录详细信息MySQL:存储用户类型和用户类型id的最佳方式是什么?,mysql,sql,database-design,Mysql,Sql,Database Design,我为商店用户、学生和考官创建了3个表 用户表包含登录详细信息 id name email password user_type (3 user types: 1 - administrators, 2 - students, 3 - examiners) user_type_id id name age birthday id name age qualifications 如果user\u type==2或3,则基于该值,user\u type\u id字段获取 学生id或考官id,如
id
name
email
password
user_type (3 user types: 1 - administrators, 2 - students, 3 - examiners)
user_type_id
id
name
age
birthday
id
name
age
qualifications
如果user\u type==2或3,则基于该值,user\u type\u id字段获取
学生id或考官id,如果用户类型=1,则值=0
学生表包含学生详细信息
id
name
email
password
user_type (3 user types: 1 - administrators, 2 - students, 3 - examiners)
user_type_id
id
name
age
birthday
id
name
age
qualifications
考官表包含考官详细信息
id
name
email
password
user_type (3 user types: 1 - administrators, 2 - students, 3 - examiners)
user_type_id
id
name
age
birthday
id
name
age
qualifications
我的问题是,使用上述方法链接用户、学生和考官可以吗
如果没有,请建议一种方法。谢谢。首先,您的数据模型需要一些改进
其次:提供数据模型
我们在用户和其他两个实体(学生和考官)之间有关系。也许将来会有其他实体加入到这个列表中。
我们有两种关系: 用户和学生之间的一种关系以及用户和考官之间的另一种关系
这些关系是一对一的。例如,每个学生有一个用户,每个用户只能为一个学生设置。以及用户和检查之间的类似声明 在一对一关系中,我们有两种解决方案:
1-将1-1关系中第1方实体的主键作为外键传递给 第二方的实体
2-将1-1关系中第2方实体的主键作为外键传递给 第1方的实体 这两种解决方案都是正确和正常的。因此,对于这种情况,我们有两种解决方案: 解决方案1:将用户ID作为外键传输给学生和考官。在这个解决方案中,我们可以很容易地找到特定学生或特定考官的每个用户ID但此解决方案的难点在于根据用户ID查找学生或考官。答案是:请注意,每个用户ID都有用户类型。因此,根据用户ID的用户类型,我们知道要搜索哪个表(学生或考官)
解决方案2:将学生和考官ID作为外键传输到用户中。这意味着用户实体有2个外键。第一个用于学生ID,第二个用于考官ID。此解决方案非常有效。但它与AA模块(身份验证和授权模块)的模块性相冲突。当与用户相关的其他表(学生、考官等)数量较多时,就会出现另一个问题。无论如何,在小型信息系统中,我们可以使用此解决方案。只是一个建议:在表
学生和考官中放置用户id
不是更好吗?与从用户
到学生
/考官
的参考不同,另一种方法是。如果您计划有大量记录,则可以进行一些优化(如果表不庞大或结构不打算更改,则此时优化没有实际意义)。其概念是在用户
中汇集所有人共有的所有数据(姓名
和年龄
)。然后,您可以使用一个带有id
(索引)user\u id
,field\u type
或field\u id
的表,而不是固定的变量表(学生/考官)。第三列取决于结构是固定(类型)还是动态(id)。如果是动态的,您将有第三个表重新接收这些字段,然后您可以添加。