Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Bagaimana saya bisa membuat tabel jadwal untuk instruktur dari tabel yang dibuat

Tabel untuk laporan ini

Laporan ini hanya berfungsi jika 'Michel' mengidentifikasi satu instruktur. Jika tidak, Anda memerlukan beberapa sub-laporan untuk satu persimpangan slot waktu hari kerja atau Anda memerlukan beberapa laporan.

Setiap sub-laporan yang tidak kosong pada baris dan kolom laporan Anda memberi tahu Anda:instructor Michel teaches course C in classroom CR to section S for department D .

Jadi laporan tersebut memberi tahu Anda hal yang sama secara keseluruhan sebagai tabel yang menampung baris di mana:instructor Michel teaches course C in classroom CR to section S for department D in timeslot TS on weekday WD . Perhatikan bagaimana kita mengambil setiap kolom dan baris dari laporan multi-dimensi seperti ini dan menambahkan kolom untuk itu ke tabel untuk setiap sub-laporan multi-dimensi di mana mereka berpotongan.

Mungkin Anda ingin tabel memberi tahu Anda hal yang sama seperti semua laporan untuk semua instruktur:instructor I teaches course C in classroom CR to section S for department D in timeslot TS on weekday WD . Perhatikan bagaimana kita mengambil parameter dalam judul dan menambahkan kolom untuk itu ke tabel.

(Sekarang kita tidak perlu khawatir apakah Michel mengidentifikasi satu instruktur.)

Desain pertama untuk laporan ini

Nama instruktur mungkin tidak unik atau tidak permanen. Jadi tambahkan id ke nama dan judul laporan. Anda mungkin memiliki lebih banyak data tentang instruktur, kursus, dan departemen. Jadi siapkan meja untuk mereka. Rupanya nomor bagian hanya unik dalam suatu kursus.

-- 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

Detail desain Anda akan berbeda. Mungkin kursus dan/atau departemen memiliki kode unik. Kemudian Anda dapat menggunakannya sebagai FK. Kemudian tambahkan tabel. Tampaknya suatu bagian dapat aktif, apa pun artinya.

CK dan Normalisasi

Instruktur, slot waktu &hari kerja tertentu hanya dapat memiliki satu kuliah mingguan. Tetapi tidak ada bagian yang lebih kecil dari itu. Jadi kita punya Weekly_Lecture CK(I_id, TS_name, WD_name) . Kursus, bagian, slot waktu &hari kerja tertentu hanya dapat memiliki satu kuliah mingguan. Tetapi tidak ada bagian yang lebih kecil dari itu. Jadi kita memiliki Weekly_Lecture CK(C_name, S_number, TS_name, WD_name) . Ruang kelas, slot waktu &hari kerja tertentu hanya dapat memiliki satu kuliah mingguan. Tetapi tidak ada bagian yang lebih kecil dari itu. Jadi kami memiliki Weekly_Lecture CK(CR_name, TS_name, WD_name) .

Mungkinkah mata kuliah yang diberikan hanya bisa diajarkan untuk satu jurusan? Mungkin nomor bagian tertentu hanya bisa diajarkan oleh instruktur tertentu? Dengan mengidentifikasi semua FD (dependensi fungsional) kami menentukan semua CK (kandidat kunci). Kemudian normalisasi menggunakan ini untuk menyarankan pilihan "lebih baik" untuk tabel dasar.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Memasukkan JSON ke dalam Tabel di SQL Server

  2. Saya mendapatkan upaya telah dilakukan untuk memuat program dengan kesalahan format yang salah pada proyek replikasi SQL Server

  3. Bagaimana cara mengembalikan ke database yang berbeda di SQL Server?

  4. Cegah Injeksi SQL dalam klausa ORDER BY

  5. Saya ingin melakukan group_concat di SQL Server