Задачата
Това е първата ни среща с истинско моделиране — преди да пишем и ред код, отговаряме на въпросите: кои обекти ще описва системата, какви характеристики (атрибути) има всеки обект и какъв тип данни е всяка характеристика.
Стъпка 1 — избираме обектите
Оглеждаме се в предметната област „училище“ и изброяваме съществените обекти:
- Ученик — централният обект на системата.
- Клас — учениците се групират в класове.
- Преподавател — води учебни предмети.
- Учебен предмет — какво се изучава.
- Оценка — свързва ученик, предмет и стойност.
Стъпка 2 — атрибути и типове
За всеки атрибут посочваме типа (по познанията ни от езиците за програмиране) и допустимите стойности:
| Обект | Атрибут | Тип | Допустими стойности |
|---|---|---|---|
| Ученик | Име | string | непразен текст |
| Ученик | ЕГН | string | точно 10 цифри |
| Ученик | Клас | връзка към Клас | съществуващ клас |
| Клас | Име | string | напр. „12А“ |
| Преподавател | Име | string | непразен текст |
| Оценка | Стойност | double | от 2.00 до 6.00 |
| Оценка | Дата | дата | валидна дата от учебната година |
| Оценка | Ученик, Предмет | връзки | съществуващ ученик / предмет |
Стъпка 3 — от модел към таблици
По релационния модел на Код: за всяка група еднотипни обекти — таблица. Връзките между обектите стават колони, сочещи към друга таблица (както class_id при учениците в нашата учебна база):
- Таблица
classes(id, name). - Таблица
students(id, name, grade, class_id → classes). - Таблица
subjects(id, name). - Таблица
marks(id, student_id → students, subject_id → subjects, mark, date).
Точно това е схемата, върху която работят SQL упражненията в този учебник — тя е решение на задачата „Моето училище“.
Стъпка 4 — полезните справки
Справките са смисълът на цялата система — моделът е добър, ако отговаря лесно на въпросите, които потребителите ще задават. Провери двете справки в упражненията по-долу.
Какво трябва да запомниш
- Моделирането започва с въпроса „кои са обектите“, не с кода.
- Всеки атрибут има тип И множество от допустими стойности.
- Връзките между обектите са част от модела (ученик → клас).
- Обект с много екземпляри и собствени характеристики → отделна таблица.
- Моделът се оценява по това колко лесно отговаря на нужните справки.