-1

问题我怎样才能使计划表从表教官创建

我需要scheduale在培训中心讲师。

我创建了表格,但是我不能这样做。

我在instructor_course table class table和section table之间做了什么关系? (我必须从表类和表款外键?我必须从表类SectionID从表中部分添加的ClassID FK表Inst_Courses表?)

表细节

我需要表现出时间表在星期日至星期四的星期内为指导员课程。

E.g. 在周日2 - 4时钟教练米歇尔给C#课程在课堂上 B节

因此,我创建下表:

Courses (like c#,access,SQL) 
Instructor(Teacher) 
Int_Courses 
Class(Lab or class room) 
Section(group of student take courses classified to a,b,c,c2) 

我已经取得教师表,课程表多对多的关系在第三张表Inst_Courses表中。

结果预计

enter image description here

数据库模式

CREATE TABLE [dbo].[Courses](
    [CourseID] [int] IDENTITY(1,1) NOT NULL, 
    [CourseName] [nvarchar](50) NOT NULL, 
CONSTRAINT [PK_dbo.Courses] PRIMARY KEY CLUSTERED 
(
    [CourseID] ASC 
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] 
) ON [PRIMARY] 

CREATE TABLE [dbo].[Class](
    [ClassID] [int] IDENTITY(1,1) NOT NULL, 
    [ClassName] [nvarchar](50) NOT NULL, 
CONSTRAINT [PK_dbo.Class] PRIMARY KEY CLUSTERED 
(
    [ClassID] ASC 
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] 
) ON [PRIMARY] 

CREATE TABLE [dbo].[Instructor](
    [InstructorID] [int] IDENTITY(1,1) NOT NULL, 
    [IstructorName] [nvarchar](50) NOT NULL, 
CONSTRAINT [PK_dbo.Instructor] PRIMARY KEY CLUSTERED 
(
    [InstructorID] ASC 
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] 
) ON [PRIMARY] 

CREATE TABLE [dbo].[InstructorCourses](
    [CourseID] [int] NOT NULL, 
    [InstructorID] [int] NOT NULL, 
CONSTRAINT [PK_dbo.InstructorCourses] PRIMARY KEY CLUSTERED 
(
    [CourseID] ASC, 
    [InstructorID] ASC 
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] 
) ON [PRIMARY] 

CREATE TABLE [dbo].[Section](
    [SecID] [int] IDENTITY(1,1) NOT NULL, 
    [SecName] [nvarchar](50) NOT NULL, 
    [Active] [bit] NOT NULL, 
CONSTRAINT [PK_dbo.Section] PRIMARY KEY CLUSTERED 
(
    [SecID] ASC 
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] 
) ON [PRIMARY] 

CREATE TABLE [dbo].[Instructor_Class](
    [ClassID] [int] NOT NULL, 
    [InstructorID] [int] NOT NULL, 
CONSTRAINT [PK_dbo.Instructor_Class] PRIMARY KEY CLUSTERED 
(
    [ClassID] ASC, 
    [InstructorID] ASC 
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] 
) ON [PRIMARY] 
+1

太宽了。请阅读[** How-to-Ask **](http://stackoverflow.com/help/how-to-ask) \t \t这里是[** START **](http ://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/),了解如何提高您的问题质量并获得更好的答案。 –

+0

你可以发布数据库架构和一些示例数据吗?以及你期望得到什么结果 –

+0

请解释什么是(学生?)组,什么是(课堂?)部分,以及你的图像表告诉我们什么。写就好像我们不明白事情是如何组织的,因为我们不知道。请尽可能多地为DDL提供DDL。 PS你的关于米歇尔的句子与表格不一致。 – philipxy

回答

0

针对此报告

本报告仅工作,如果 '米歇尔' 表标识一名教员。否则,您需要一个工作日时隙交叉点的多个子报告,或者您需要多个报告。

在行和报表的列中的每个非空分报告告诉你:instructor Michel teaches courseCin classroomCRto sectionSfor departmentD

所以报告会告诉你同样的事情作为整体表持有行,其中:instructor Michel teaches courseCin classroomCRto sectionSfor departmentDin timeslotTSon weekdayWD。请注意,我们如何获取像这样的多维报告的每一列和行,并为其添加一列到它们相交的每个多维子报告的表格中。

也许你想要一个表格告诉你同样的事情,所有的教练都报道:instructorIteaches courseCin classroomCRto sectionSfor departmentDin timeslotTSon weekdayWD。请注意,我们如何在标题中添加一个参数并为其添加一列。

(现在我们并不需要担心米歇尔是否标识一个教练。)

的第一设计对本报告

导师的名字可能是不唯一的或非永久性。所以为名称和报告标题添加标识。你可能有更多关于讲师,课程和部门的数据。所以有他们的表格。显然,一个章节号码在一门课程中是唯一的。

-- instructor ID is named NAME and ... 
Instructor(id, name, ...) 
    CK(id) 
-- course NAME ... 
Course(name, ...) 
    CK (name) 
-- department NAME ... 
Department(name, ...) 
    CK (name) 
-- course C_NAME has section S_NUMBER 
Course_Has_Section(C_name, S_number) 
    CK (C_name, S_number) 
    FK(C_name) to Course 
-- instructor I_id teaches course C_NAME in classroom CR_NAME to section S_NUMBER 
--  for department D_NAME in timeslot TS_NAME on weekday WD_NAME 
Weekly_Lecture(I_id, C_name, CR_name, S_number, D_name, TS_name, WD_name) 
    FK(I_id) to Instructor 
    FK(C_name, S_number) to Course_Has_Section 
    FK(D_name) to Department 

您的设计细节将有所不同。也许课程和/或部门有独特的代码。那么你可以使用它们作为FK。然后添加一个表。显然,一个部分可以是活动的,无论这意味着什么。

中正和规范的

一个给定的教练,时隙&平日只能有一个每周一次的讲座。但是没有更小的子集。所以我们有Weekly_Lecture CK(I_id, TS_name, WD_name)。一个给定的课程,部分,时间段&工作日只能有一个每周一次的讲座。但是没有更小的子集。所以我们有Weekly_Lecture CK(C_name, S_number, TS_name, WD_name)。给定的教室,时间段&工作日只能有一个每周一次的讲座。但是没有更小的子集。所以我们有Weekly_Lecture CK(CR_name, TS_name, WD_name)

也许一个给定的课程只能教一个部门?也许给定的章节号只能由给定的教师教授?通过识别所有的FD(函数依赖),我们确定所有的CK(候选键)。然后正常化使用这些可能建议基准表的“更好”的选择。