Лого на 91. НЕГ „Проф. Константин Гълъбов“

Модул 3 · Урок 5

Моделиране на информационна система (практикум)

Проектираме малка ИС „Моето училище“: избираме обекти, определяме атрибутите им и типовете на данните, и обмисляме полезните справки.

Задачата

Задача 1 (от учебника)

Проектирайте неголяма информационна система на тема Моето училище, като предвидите някои от възможните обекти — Училище, Ученик, Учебен предмет, Преподавател и т.н. За всеки обект определете типа на данните за всеки от атрибутите и множеството от допустими стойности там, където е приложимо.

Това е първата ни среща с истинско моделиране — преди да пишем и ред код, отговаряме на въпросите: кои обекти ще описва системата, какви характеристики (атрибути) има всеки обект и какъв тип данни е всяка характеристика.

Стъпка 1 — избираме обектите

Оглеждаме се в предметната област „училище" и изброяваме съществените обекти:

  • Ученик — централният обект на системата.
  • Клас — учениците се групират в класове.
  • Преподавател — води учебни предмети.
  • Учебен предмет — какво се изучава.
  • Оценка — свързва ученик, предмет и стойност.

Съвет

Добър тест дали нещо е отделен обект: има ли собствени характеристики и много ли екземпляри от него съществуват? „Оценка" не е просто число — тя има ученик, предмет и дата, затова е отделен обект.

Стъпка 2 — атрибути и типове

За всеки атрибут посочваме типа (по познанията ни от езиците за програмиране) и допустимите стойности:

ОбектАтрибутТипДопустими стойности
УченикИмеstringнепразен текст
УченикЕГНstringточно 10 цифри
УченикКласвръзка към Классъществуващ клас
КласИмеstringнапр. „12А“
ПреподавателИмеstringнепразен текст
ОценкаСтойностdoubleот 2.00 до 6.00
ОценкаДатадатавалидна дата от учебната година
ОценкаУченик, Предметвръзкисъществуващ ученик / предмет

Допустимите стойности са част от модела

„Оценката е между 2 и 6" не е детайл — това е ограничение за цялостност. В следващите уроци ще видим, че СУБД може да пази такива правила вместо нас.

Стъпка 3 — от модел към таблици

По релационния модел на Код: за всяка група еднотипни обекти — таблица. Връзките между обектите стават колони, сочещи към друга таблица (както class_id при учениците в нашата учебна база):

  1. Таблица classes(id, name).
  2. Таблица students(id, name, grade, class_id → classes).
  3. Таблица subjects(id, name).
  4. Таблица marks(id, student_id → students, subject_id → subjects, mark, date).

Точно това е схемата, върху която работят SQL упражненията в този учебник — тя е решение на задачата „Моето училище".

Стъпка 4 — полезните справки

Задача 3 (от учебника)

Формулирайте полезни справки от базата с данни. Например: „всички ученици от даден клас", „средният успех по предмет", „учениците с поне една отлична оценка".

Справките са смисълът на цялата система — моделът е добър, ако отговаря лесно на въпросите, които потребителите ще задават. Провери двете справки в упражненията по-долу.

Какво трябва да запомниш

  • Моделирането започва с въпроса „кои са обектите“, не с кода.
  • Всеки атрибут има тип И множество от допустими стойности.
  • Връзките между обектите са част от модела (ученик → клас).
  • Обект с много екземпляри и собствени характеристики → отделна таблица.
  • Моделът се оценява по това колко лесно отговаря на нужните справки.