我想实现我在数据库中创建的类,
我有一个像
这样的课程Class Person {
firstname ;
lastname;
email
etc
}
Class Teacher extends Person {
salary;
graduatedFrom ;
etc ...
hasMany: [classess, experiences] ;
}
Class Student extends Person{
tuitionFee ;
parentName ;
etc ...
}
我打算在这个项目中使用mysql数据库, 我应该创建一个名为Person的表并在那里存储所有信息 或者我应该为每个班级创建不同的表格(如老师,学生等)?
注意:我将使用YII Framework和MYSQL数据库来实现它。
答案 0 :(得分:1)
您最好创建两个存储所有人员详细信息的表,此表将有一个外键引用其他表来存储角色详细信息(例如教师,学生)
这种方式对于可伸缩性也是可取的,例如明天,如果你的应用程序有50个角色,你不需要创建50个表,你只需要在角色表中添加一个条目。
表人会是这样的(名字,姓氏,电子邮件,角色_等)
role_id这里是角色表的主键
角色表将是这样的(role_id,role_name,role_desc等)
答案 1 :(得分:0)
您可以使用几种不同的设计模式:
有关此(以及其他有用模式)的更多信息,请阅读Martin Fowler的Patterns of Enterprise Application Architecture。
其他例子:
答案 2 :(得分:0)
我只会创建一个表Person
,其中一列将作为人员(学生,教师等)的标识符。
优点:我们在检索信息时不必注意sql连接,因为它只从一个表中获取信息!它在保存数据时也会带来好处。认为在存储Student
的数据时,您不必将信息保存到两个不同的表中。
如果你为每个类创建单独的表(并且想要避免sql连接),那么你最终可能会在数据库中创建大量重复信息。
减少表的数量将产生干净的代码。
鉴于上述情况,如果您为特殊实体创建一个单独的表,您认为应该单独存储(使用主表的引用键)并且不希望混淆原始表,那么它仍然有意义。表