== **[[span(style=color: #BF1B1B, Релациска шема)]]** Релациски модел Стабилна трансформација Трансформација на множествата ентитети student(student_id, username, s_first_name, s_last_name, s_password) subject-book(book_id, book_title, b_year_of_publishment, book_edition) chapter(book_id*, chapter_number, chapter_title) * референцира од subject_book(book_id) author(author_id, author_name, a_short_biography) feedback(fb_id, fb_date, fb_title, fb_description, fb_rating) e-mail(student_id*, e-mail_id, e-mail_address) * референцира од student(student_id) school_year(student_id*, starting_year, finishing_year) *референцира од student(student_id) term(student_id*, starting_year*, finishing_year*, term_type, term_start_date, term_end_date) *референцира од school_year(student_id, starting_year, finishing_year) subject_at_term(student_id*, starting_year*, finishing_year*, term_type*, term_subject_id, subject_name) *референцира од term(student_id, starting_year, finishing_year, term_type) professor(professor_id, p_first_name, p_last_name, p_role, p_e-mail) dashboard(student_id*, dashboard_id, dashboard_date) *референцира од student(student_id) notes(student_id*, dashboard_id*, note_id, notes_Date, note_text) *референцира од dashboard(student_id, dashboard_id) place(place_id, building_name, room_name) chalendar_event(chalendar_event_id, event_name, event_type, event_description, event_start_time, event_end_time) task(task_id, task_name, task_description, task_priority, is_done) reminder(calendar_event_id*, r_id, minutes_before_event, r_flag) *референцира од calendar_event(calendar _event_id) repeating_event(calendar_event_id*, event_week_day, repeats_every_n_weeks, starting_date, ending_date) * референцира од calendar_event(calendar_event_id) non-repeating_event(calendar_event_id, event_date) * референцира од calendar_event(calendar_event_id) Трансформација на множествата релации меѓу ентитетите has_taken_a_subject(student_id*, starting_year*, finishing_year*, term_type*, term_subject_id*, student_id^) *референцира од subject_at_term((student_id, starting_year, finishing_year, term_type, term_subject_id) ^референцира од student(student_id) holds_subject(student_id*, starting_year*, finishing_year*, term_type*, term_subject_id*, professor_id^) *референцира од subject_at_term((student_id, starting_year, finishing_year, term_type, term_subject_id) ^референцира од professor(professor_id) holds_event(calendar_event_id*, professor_id^) *референцира од calendar_event(calendar_event_id) ^референцира од professor(professor_id) happens_at_place(calendar_event_id*, place_id) *референцира од calendar_event(calendar_event_id) ^референцира од place(place_id) term_has_subject() ИДЕНТИФИКУВАЧКА ЗА subject_at_term dashboard_task(task_id*, student_id^, dashboard_id^) *референцира од task(task_id) ^референцира од dashboard(student_id, dahsboard_id) recommended_book(student_id*, starting_year*, finishing_year*, term_type*, term_subject_id*, book_id^) *референцира од subject_at_term(student_id, starting_year, finishing_year, term_type, term_subject_id) ^референцира од book(book_id) recommended_chapter(calendar_event_id*, book_id^, chapter_number^) *референцира од calendar_event(calendar_event_id) ^референцира од chapter(book_id, chapter_number) has_consultations(calendar_event_id*, professor_id^) *референцира од calendar_event(calendar_event_id) ^референцира од professor(professor_id) year_has_subject(student_id*, starting_year*, finishing_year*, term_type*, term_subject_id*, student_id^, starting_year^, finishing_year^) *референцира од subject_at_term(student_id, starting_year, finishing_year, term_type, term_subject_id) ^референцира од school_year(student_id, starting_year, finishing_year) student_dashboard() ИДЕНТИФИКУВАЧКА ЗА dashboard studied_in_school_year() ИДЕНТИФИКУВАЧКА ЗА school_year dashboard_notes() ИДЕНТИФИКУВАЧКА ЗА notes book_modules() ИДЕНТИФИКУВАЧКА ЗА chapter contains_terms() ИДЕНТИФИКУВАЧКА ЗА term has_e-mail() ИДЕНТИФИКУВАЧКА ЗА e-mail dashboard_event(student_id*, dashboard_id*, calendar_event^) *референцира од dashboard(student_id, dashboard_id) ^референцира од calendar_event(calendar_event_id) subject_event(calendar_event_id*, student_id^, starting_year^, finishing_year^, term_type^, term_subject_id^) *рефенцира од calendar_event(calendar_event_id) ^рефенцира од subject_at_term(student_id, starting_year, finishing_year, term_type, term_subject_id) creates_task(task_id*, student_id^, starting_year^, finishing_year^, term_type^, term_subject_id^) *рефенцира од task(task_id) ^рефенцира од subject_at_term(student_id, starting_year, finishing_year, term_type, term_subject_id) student_event(calendar_id*, student_id^) *референцира од calendar_event(calendar_event_id) ^референцира од student(student_id) student_task(task_id*, student_id^) *референцира од task(task_id) ^референцира од student(student_id) book_author(author_id*, book_id^) *референцира од author(author_id) ^референцира од book(book_id) gives_feedback(fb_id*, student_id^) *референцира од feedback(fb_id) ^референцира од student(student_id) event_reminder() ИДЕНТИФИКУВАЧКА ЗА reminder Open points: Зошто стабилна трансформација? Одржливост -промените во моделот резултираат во минимални промени кај релациите Скалабилност и адаптибилност- креира робустна основа која може да трпи промени и надградби без наружување на целата структура ER- ВЕРЗИЈА 2 унифицирање на имиња description -> task_description password -> s_password username -> s_username role -> p_role year_of_publishment -> b_year_of_publishment Place -> place Author -> author додавање на атрибут p_e-mail кај professor a_short_biography кај author промена од слаб во силен ентитет feedback промена од силен во слаб ентитет reminder промена на клуч кај dashboard се додава генериран клуч, dashboard_date преминува во атрибут == **[[span(style=color: #BF1B1B, Табели)]]** == **[[span(style=color: #BF1B1B, DDL скрипта за бришење на табелите и креирање на табелите)]]** == **[[span(style=color: #BF1B1B, DML скрипта за полнење на табелите со податоци)]]** == **[[span(style=color: #BF1B1B, Дијаграм од DBeaver)]]**