MySQL 5.5.57';用户';数据库中的表

MySQL 5.5.57';用户';数据库中的表,mysql,database,database-design,Mysql,Database,Database Design,我需要在教育数据库中创建一个user表,其中用户可以具有以下配置文件: 1. Admin 2. School Admin 3. Tutor 4. Student 5. Parent 6. School Teacher 现在的问题是,是否为每个概要文件创建单独的表,并使用user to表中的键与概要文件表链接,或者将所有内容保存在一个表中,并添加概要文件键以标识用户类型。每天都会在数据库中添加新用户,因此它是一个不断增长的数据库 为获取数据而运行的查询特定于配置文件。例如,每次将为一个概要文件获

我需要在教育数据库中创建一个
user
表,其中用户可以具有以下配置文件:

1. Admin
2. School Admin
3. Tutor
4. Student
5. Parent
6. School Teacher
现在的问题是,是否为每个概要文件创建单独的表,并使用user to表中的键与概要文件表链接,或者将所有内容保存在一个表中,并添加概要文件键以标识用户类型。每天都会在数据库中添加新用户,因此它是一个不断增长的数据库


为获取数据而运行的查询特定于配置文件。例如,每次将为一个概要文件获取数据。但是,如果我们需要一个学生的所有老师,或者一个老师的所有学生,那么情况又如何呢?在这种情况下,我必须将学生的id存储在导师和教师表中。优化的方法是什么?

我建议为配置文件创建单独的表,并使用“用户到表”中的键链接到配置文件表(如果配置文件已预配置)

若配置文件是动态的,那个么您必须在应用程序中注意检查配置文件是否存在,若不存在,则首先插入到配置文件表中,然后插入到用户表中。这可能会影响插入性能


要获取一个学生的所有教师或一个教师的所有学生,您必须使用self-join

配置文件是预定义的。只有一些配置文件具有特定于配置文件的列,因此我可以仅对包含不同列集的配置文件进行隔离吗?基本上,一些配置文件的单独表格和同一个用户表格中的其他表格是不稳定的。在这种情况下,最好包含在用户表本身中。如果配置文件具有不同的属性,那么您当然应该将配置文件和键分离到用户表中。问题是,为每个配置文件使用单独的表使设计更加灵活,但也可能增加连接。创建单独表的另一个原因是用户表正在增长。每天都有新的用户加入,使得桌子越来越大。如果我看到未来10年,那么这种设计将失败,因为用户数量将是巨大的。还会有桥牌,因此,寻找学生的教师或导师的学生可以从桥接表中获取,因为这是一个m-n关系。如果我们将其分离,那么这将是灵活的,并节省内存,但您说一些配置文件是特定于用户的,在这种情况下,您无法避免将配置文件包含在用户表中。我总是喜欢单独的桌子。如果可以在应用程序中正确处理FK,则可以分离概要文件表或维护桥接表。