首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用C#、sql、asp.net、exchange进行SQL语言训练数据库设计

使用C#、sql、asp.net、exchange进行SQL语言训练数据库设计
EN

Stack Overflow用户
提问于 2010-08-10 20:41:13
回答 3查看 5.8K关注 0票数 1

有关使用Active Directory和Exchange的可能解决方案,请参阅下面的帖子。

我们希望在SQL中创建一个培训数据库,用于员工的内部培训课程。不幸的是,我在数据库设计方面没有任何经验,也没有机会购买和阅读关于这个主题的适当书籍。

我刚刚开始创建一个数据库后,阅读了一些在线教程,并希望您审查我的设计,并提供一些反馈,如果我已经开始或多或少正确。

课程表将存储我们的培训课程及其持续时间、能力和您将在此课程中学到的内容的简短描述。“培训期次”表将用于将课程与特定培训和完成培训的日期链接起来。培训师是提供内部课程的同事。

出勤表存储培训会话id,以及员工是否参加了该会话。

下面是我们的数据库示意图:

alt text http://img8.imageshack.us/img8/2464/trainingdb.jpg

稍后,我们还希望存储与培训课程相关的工作职位。例如,我们的网络简介课程适用于1级分析师、2级分析师和团队负责人。我们的ITIL课程只与团队领导相关。

您将如何存储此信息?你会使用一个单独的表和位置,并为此使用多对多关系吗?

非常感谢,

马蒂亚斯

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-11-22 19:34:52

表的解释如下:

我们使用模块类别、模块类型、课程、计划、培训方法和岗位工作表,使用下拉列表对培训模块进行分类。它们的关系是1:n。

模块<->员工关系是m:n。正如您可以从模型中看到的,交叉表是Trainer,其中我们定义了额外的优先级属性,以允许我们定义模块的trainer优先级。

培训模块<->角色关系是多对多关系,因为一个模块可以与许多工作角色相关。交叉表是RoleRelevance,我们为每个角色定义了required、recommended、probation和hide属性。

“培训请求”表保存已请求的每个培训请求的记录。我们也有新的启动器请求,因为我们没有可以将请求链接到的域配置文件/ SAM。

employee表从我们的域控制器使用AD查询进行填充,而employee正在请求培训,或者正在为模块定义培训师。该表包括用于发送邀请的员工smtp地址。有关如何获取此数据的代码示例,请参阅我的其他stackoverflow帖子。

我们使用托管EWS为员工、直线经理、培训师和资源/会议室创建会议邀请。邀请id和状态(接受/拒绝/未知)存储在EmployeeInvitation、TrainerInvitation和ResourceInvitation表中。

我们创建的培训会话将被插入到培训会话表中。

票数 1
EN

Stack Overflow用户

发布于 2010-08-10 21:05:21

结构看起来很好。不过,我建议再添加一个外键关系: Attendance.EmployeeID应该引用Employee表。

出席不需要自己的主键。employee和session的组合唯一地标识了它(给定的员工不能多次参加给定的会话,不是吗?)您可能应该将这两个ID列用作复合主键。

课程真的有容量吗,或者它是一个有容量的课程?

UpdateTime列是用来做什么的?

票数 2
EN

Stack Overflow用户

发布于 2010-08-10 22:04:42

稍微简化一点,不考虑注册人数,但可能会对你的想法有所帮助。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3448997

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档