База данных «Окраска»
Схема базы данных состоит из трех таблиц:
utQ (Q_ID int, Q_NAME varchar(35));
utV (V_ID int, V_NAME varchar(35), V_COLOR char(1));
utB (B_Q_ID int, B_V_ID int, B_VOL tinyint, B_DATETIME datetime).
Таблица utQ содержит идентификатор и название квадрата, цвет которого первоначально черный.
Таблица utV содержит идентификатор, название и цвет баллончика с краской.
Таблица utB содержит информацию об окраске квадрата баллончиком: идентификатор квадрата, идентификатор баллончика, количество краски и время окраски.
При этом следует иметь в виду, что:
баллончик с краской может быть одного из трех цветов - красный V_COLOR=‘R’, зеленый V_COLOR=‘G’, синий V_COLOR=‘B’ (латинские буквы).
объем баллончика равен 255 и первоначально он полный;
цвет квадрата определяется по правилу RGB, т.е. (R=0, G=0, B=0) - черный, (R=255, G=255, B=255) - белый;
запись в таблице закрасок utB уменьшает количество краски в баллончике на величину B_VOL и соответственно увеличивает количество краски в квадрате на эту же величину;
значение 0 < B_VOL <= 255;
количество краски одного цвета в квадрате не превышает 255, а количество краски в баллончике не может быть меньше нуля;
время окраски B_DATETIME дано с точностью до секунды, т.е. не содержит миллисекунд.
Некоторые пояснения к схеме.
Идентификаторы черных квадратов отсутствуют в таблице utB. Это следует из того, что B_VOL не допускает NULL-значений и строго больше нуля. Таким образом, каждая запись в таблице utB описывает факт окраски одного квадрата одним баллончиком, черный же квадрат (R=0, G=0, B=0) не подвергался окраске вовсе.
Ограничения схемы допускают одновременную окраску одного квадрата несколькими баллончиками, как и одновременную окраску одним баллончиком нескольких квадратов. Однако запрещена одновременная окраска одного квадрата одним и тем же баллончиком.