Bảng cho báo cáo này
Báo cáo này chỉ hoạt động nếu 'Michel' xác định được một người hướng dẫn. Nếu không, bạn cần nhiều báo cáo phụ cho một giao điểm giữa các ngày trong tuần hoặc bạn cần nhiều báo cáo.
Mỗi báo cáo phụ không để trống tại một hàng và cột trong báo cáo của bạn cho bạn biết:instructor Michel teaches course
C
in classroom
CR
to section
S
for department
D
.
Vì vậy, báo cáo cho bạn biết điều tương tự về tổng thể như một bảng chứa các hàng nơi:instructor Michel teaches course
C
in classroom
CR
to section
S
for department
D
in timeslot
TS
on weekday
WD
. Lưu ý cách chúng tôi lấy từng cột và hàng của báo cáo đa chiều như thế này và thêm cột cho báo cáo đó vào bảng cho mỗi báo cáo phụ đa chiều nơi chúng giao nhau.
Có thể bạn muốn một bảng cho bạn biết điều tương tự như tất cả các báo cáo cho tất cả người hướng dẫn:instructor
I
teaches course
C
in classroom
CR
to section
S
for department
D
in timeslot
TS
on weekday
WD
. Lưu ý cách chúng tôi lấy một tham số trong tiêu đề và thêm một cột cho nó vào bảng.
(Bây giờ chúng ta không cần phải lo lắng về việc liệu Michel có xác định được một người hướng dẫn hay không.)
Thiết kế đầu tiên cho báo cáo này
Tên người hướng dẫn có thể không phải là duy nhất hoặc không cố định. Vì vậy, hãy thêm id vào tên và tiêu đề báo cáo. Bạn có thể có nhiều dữ liệu hơn về người hướng dẫn, khóa học và phòng ban. Vì vậy, có bảng cho chúng. Rõ ràng số phần chỉ là duy nhất trong một khóa học.
-- 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
Chi tiết thiết kế của bạn sẽ khác nhau. Có thể các khóa học và / hoặc phòng ban có mã duy nhất. Sau đó, bạn có thể sử dụng chúng như FK. Sau đó, thêm một bảng. Rõ ràng một phần có thể đang hoạt động, bất kể điều đó có nghĩa là gì.
CK và chuẩn hóa
Một người hướng dẫn cụ thể, thời gian biểu &ngày trong tuần chỉ có thể có một bài giảng hàng tuần. Nhưng không có tập con nhỏ hơn trong số đó. Vì vậy, chúng tôi có Weekly_Lecture CK(I_id, TS_name, WD_name)
. Một khóa học, phần, thời gian biểu và ngày trong tuần nhất định chỉ có thể có một bài giảng hàng tuần. Nhưng không có tập con nhỏ hơn trong số đó. Vì vậy, chúng tôi có Weekly_Lecture CK(C_name, S_number, TS_name, WD_name)
. Một lớp học, khung thời gian và ngày trong tuần nhất định chỉ có thể có một bài giảng hàng tuần. Nhưng không có tập con nhỏ hơn trong số đó. Vì vậy, chúng tôi có Weekly_Lecture CK(CR_name, TS_name, WD_name)
.
Có lẽ một khóa học nhất định chỉ có thể được giảng dạy cho một bộ phận? Có thể một số phần nhất định chỉ có thể được dạy bởi một người hướng dẫn nhất định? Bằng cách xác định tất cả FD (phụ thuộc chức năng), chúng tôi xác định tất cả CK (khóa ứng viên). Sau đó, chuẩn hóa sử dụng chúng để có thể đề xuất các lựa chọn "tốt hơn" cho các bảng cơ sở.