如下三张表单:
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表设计的时候,将子表做成下拉选择的就行了。
------解决方案--------------------
如果你纠结于数据库表的编程问题,请到数据库论坛去问问题。
如果你纠结于BLL和实体的设计,那么这根本用不着扯上什么数据库表,而应该从自然的领域模型去考虑。例如一个地图,它有四至范围,有图例(其中含有多个图例项),有多个图层。你管它一个地图是对应6个表还是10个表干什么?面向对象设计就是从自然的领域模型出发,如果你纠缠于什么关系数据库表,你的精力都扔给低级的编程上了。