-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(候選鍵)。然後正常化使用這些可能建議基準表的「更好」的選擇。