日期:2014-05-20  浏览次数:20943 次

关联多张表的对象的设计
如下三张表单:
1.用户信息表:Staff
字段名           类型          备注
Staff_ID          Int(自动加一) 用户ID
Staff_Name Varchar          用户名(默认工号)
PassWord     varchar     密码
Real_Name   varchar          真实姓名

2.角色字典表:Role
字段名     类型       备注
Role_ID          Int(自动加一) 角色ID
Role_Name   Varchar          角色名称名称
Role_Description Varchar          角色说明

3.用户所属角色表:
字段名           类型           备注
Staff_ID           Int           用户ID    
Role_ID           Int           所属角色ID
    因为表3是简单的两张表的关系表,所以在进行抽象时,在类Staff和Role中分别定义List类型的字段(属性),就可以获得员工所属的角色和某个角色下的所有员工信息。实现了表3关系表的操作。
Class Staff
{
    Public List<Role> RoleS;
}
Class Role
{
    Public List<Staff> StaffS;
}
但是如果是下面的情况:
4.课程信息表:Course
字段名          类型     备注
Course_Number varchar     课程编码
Course_Name varchar     课程名称
Remark          Varchar     课程说明

5.学期信息表:Term
字段名       类型     备注
Term_ID    Int     学期ID
Term_Name          Varchar     学期名称

6.教室信息表:ClassRoom
字段名      类型       备注
ClassRoom_Number Varchar    教室编号
Remark          Varchar    教室说明

7.班级信息表:Classes
字段名     类型       备注
Class_ID   varchar    班级编号
Stu_Number int          学生人数

8.学期课程表:Term_Course
字段名     类型          备注
Term_ID    Int         学期ID
Course_Number Varchar    课程编号
Class_ID   Varchar    班级ID
Staff_ID   int        任课教师ID
ClassRoom_Number Varchar    教室编号

表8中涉及到到表1、4、5、6、7中的字段,如何除了定义教师Staff、课程Course、学期Term、教室ClassRoom、班级Classes这些对象外,怎么实现表8的操作?

------解决方案--------------------
你表8应是5个联合主键,可以前台新增,删除,与正常表操作一样

但更新就应不用了,主键虽可以更新,但最好不要更新
------解决方案--------------------
8表属于综合表也就是主表,1,4、5、6、7属于子表,在主表中通过下拉或者其他操作,将子表作为标准对象进行选择性的操作。
这种设计是为了规范输入的正确性,能够实现数据的统一性。只要一个子表变更,主表就可以通过id关联显示。
你在做8表设计的时候,将子表做成下拉选择的就行了。
------解决方案--------------------
引用:
我的意思是,在多层架构中,也将Term_Course定义成一个类吗?还是有其它更好的方法。


如果你纠结于数据库表的编程问题,请到数据库论坛去问问题。