首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

关联多张表的对象的设计,该如何解决

2013-01-26 
关联多张表的对象的设计如下三张表单:1.用户信息表:Staff字段名类型备注Staff_IDInt(自动加一)用户IDStaff

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

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

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_Numbervarchar    课程编码
Course_Namevarchar    课程名称
Remark         Varchar    课程说明

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

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

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

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

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

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

但更新就应不用了,主键虽可以更新,但最好不要更新
[解决办法]
8表属于综合表也就是主表,1,4、5、6、7属于子表,在主表中通过下拉或者其他操作,将子表作为标准对象进行选择性的操作。
这种设计是为了规范输入的正确性,能够实现数据的统一性。只要一个子表变更,主表就可以通过id关联显示。
你在做8表设计的时候,将子表做成下拉选择的就行了。
[解决办法]

引用:
我的意思是,在多层架构中,也将Term_Course定义成一个类吗?还是有其它更好的方法。


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



如果你纠结于BLL和实体的设计,那么这根本用不着扯上什么数据库表,而应该从自然的领域模型去考虑。例如一个地图,它有四至范围,有图例(其中含有多个图例项),有多个图层。你管它一个地图是对应6个表还是10个表干什么?面向对象设计就是从自然的领域模型出发,如果你纠缠于什么关系数据库表,你的精力都扔给低级的编程上了。

热点排行