Модуль 9 · Урок 33
Реляційна модель, keys і constraints
QA читає schema як контракт даних: що ідентифікує row, які зв’язки дозволені, які значення неможливі та де business invariant виходить за межі одного constraint.
Від requirement до data contract
Table моделює тип сутності, row — окремий факт про неї, column — attribute із domain/type. Physical schema не дорівнює всій бізнес-моделі: назви, nullability, keys, defaults, constraints, indexes і migrations треба зв’язати з requirement та версією release.
Що гарантують constraints
| Constraint | QA oracle |
|---|---|
| PRIMARY KEY | Значення унікальне й не NULL; row має стабільну identity. |
| FOREIGN KEY | Reference існує; update/delete policy не створює orphan або несподівану cascade. |
| UNIQUE | Duplicate за заданим набором columns відхиляється; NULL semantics перевіряються окремо. |
| CHECK / NOT NULL | Invalid domain/boundary або missing required value не потрапляє до table. |
Default підставляє значення, коли column omitted, але не є validation rule і не обов’язково спрацьовує для explicit NULL.
Constraint test matrix
Для кожного rule зафіксуйте valid, boundary та invalid setup; exact action; expected database error class/constraint; відсутність partial row і side effects. В UI/API може бути рання validation, але database constraint лишається останньою лінією цілісності.
Constraint не покриває всю business truth
«Не більше 3 активних позик», баланс між tables або time-dependent rule можуть потребувати transaction-safe application logic. Не приписуйте schema гарантій, яких у ній немає.
Read-only integrity checks
Перевіряйте duplicates через `GROUP BY … HAVING COUNT(*) > 1`, orphan candidates — `LEFT JOIN` з `IS NULL`, missing required data — explicit `IS NULL`. Записуйте schema version, environment, timezone, query text/hash, row count і redacted evidence.
Практика
У SQL QA Pack прочитайте `schema.sql`, заповніть `constraint-test-matrix.csv` і поясніть, які rules гарантує database, а які залишаються application invariant.
Офіційні джерела
Закріпіть матеріал уроку
Три сценарні питання. Для зарахування уроку потрібно дати щонайменше дві правильні відповіді.