ОбразованиеУчи по-лесно.
Назад към темите

Тема: Ограничения UNIQUE, CHECK и DEFAULT.

1. Теоретична част

1. Ограничение UNIQUE

UNIQUE не позволява две различни записа в таблицата да имат една и съща стойност в дадена колона. За разлика от PRIMARY KEY, в една таблица може да има няколко UNIQUE ограничения. В SQL Server UNIQUE колона допуска най-много една NULL стойност.

  • Към колона: Email NVARCHAR(100) UNIQUE
  • Именувано, на ниво таблица: CONSTRAINT UQ_Customers_Email UNIQUE (Email)

2. Ограничения CHECK и DEFAULT

CHECK проверява дали въведената стойност отговаря на зададено условие и отхвърля записа, ако не отговаря. DEFAULT задава стойност по подразбиране, когато при INSERT за колоната не е подадена стойност.

  • CHECK: Price DECIMAL(10,2) CHECK (Price > 0)
  • DEFAULT: CreatedOn DATETIME DEFAULT GETDATE() или Quantity INT DEFAULT 0

2. Практическо задание

Тема: Ограничения UNIQUE, CHECK и DEFAULT

Време за работа: 35 минути

Условие 1: В база данни OnlineShop създайте таблица Customers с колони: CustomerID INT PRIMARY KEY, FullName NVARCHAR(100) NOT NULL, Email NVARCHAR(100) и Phone NVARCHAR(20). Таблицата трябва да не допуска повтарящи се имейли и телефони.

  • Задайте UNIQUE ограничения с имена UQ_Customers_Email и UQ_Customers_Phone. Въведете клиентите (1, N'Иван Петров', 'ivan@mail.bg', '0888111222') и (2, N'Мария Дончева', 'maria@mail.bg', '0888333444').
  • Опитайте да въведете клиент (3, N'Петър Грозев', 'ivan@mail.bg', '0888555666'). Запишете съобщението за грешка и обяснете в един ред защо възниква.

Условие 2: Създайте таблица Products с колони: ProductID INT PRIMARY KEY, ProductName NVARCHAR(100) NOT NULL, Price DECIMAL(10,2), Quantity INT и CreatedOn DATETIME. Таблицата трябва да контролира стойностите и да попълва автоматично липсващите данни.

  • Добавете CHECK за Price > 0 и за Quantity >= 0, DEFAULT 0 за Quantity и DEFAULT GETDATE() за CreatedOn.
  • Въведете продукт само с ProductID, ProductName и Price (например 1, N'Безжична мишка', 29.90) и проверете със SELECT попълнените автоматично колони. След това опитайте INSERT с Price = -5 и запишете резултата.
Преди всеки тест на грешка изпълнявайте само един INSERT. Така ясно ще видите кое ограничение е сработило.

3. Цел

Цел: Учениците упражняват дефиниране на UNIQUE, CHECK и DEFAULT в CREATE TABLE. След задачата трябва да могат да проверят действието на ограниченията чрез коректни и некоректни INSERT заявки.

4. Критерии за оценяване

Критерий Точки
1. Спазване на правилата за здравословни и безопасни условия на труд и опазване на околната среда 10 т.
2. Ефективна организация на работното място 10 т.
3. Спазване на технологичната последователност на операциите според индивидуалното задание  
3.1 Създадена таблица Customers с именувани UNIQUE ограничения и въведени два клиента 20 т.
3.2 Проверен опит за повторен имейл и записана и обяснена грешка 20 т.
3.3 Създадена таблица Products с CHECK и DEFAULT ограничения и проверка със SELECT и с невалидна цена 20 т.
3.4 Правилен синтаксис, точност на данните и работещ краен резултат 20 т.
Общо: 100 т.

5. Оценъчна скала

Оценка Точков диапазон
Отличен (6) 90–100 т.
Много добър (5) 80–89 т.
Добър (4) 70–79 т.
Среден (3) 60–69 т.
Слаб (2) под 60 т.

Изготвил: Цветелин Борисов