В начало

База данных Человеки

 

            Постановка задачи: создать базу данных «Человеки» в СУБД «MS SQL Server 2005 Management Studio Express».

            Концепция будущей базы: четыре никак не связанных таблицы (Фамилии, Имена, Отчества, ФИО), таблица «ФИО» заполняется из других таблиц рандомно, при помощи процедуры.

            Запускаем  программу «MS SSMSE», соединяемся с сервером, переходим в инспектор объектов на ветку «Базы данных», кликаем правой кнопкой на ветке и выбираем в контекстном меню строку «Создать базу данных…», именуем новую базу и сохраняем под именем «Человеки».

            Далее переходим на ветку «Базы данных – Человеки – Таблицы» и создаем первую таблицу «Фамилии».

Имя столбца

Тип данных

Код фамилии

BigInt, первичный ключ, счетчик

Фамилия

nVarChar(20)

            Сохраняем таблицу и заполняем ее несколькими значениями. Немного облегчим себе задачу и введем фамилии мужского рода.

Рис. 1. Заполненная таблица «Фамилии»

Рис. 1. Заполненная таблица «Фамилии»

 

            Потом создаем таблицу «Имена».

Имя столбца

Тип данных

Код имени

BigInt, первичный ключ, счетчик

Имя

nVarChar(20)

            Заполним таблицу «Имена».

Рис. 2. Заполненная таблица «Имена»

            Хотя все отчества являются производными от имен, например, «Иванович» от «Иван» образовано добавлением «ович» к имени, а тоже отчество «Сергеевич» образовано от имени «Сергей» с заменой буквы «й» на «евич», все же создадим отдельную таблицу на отчества. Хотя конечно можно и с этим  разобраться.

Имя столбца

Тип данных

Код отчества

BigInt, первичный ключ, счетчик

Отчество

nVarChar(20)

            Заполним таблицу «Отчества».

Рис. 3. Заполненная таблица «Отчества»

 

            Теперь создадим таблицу «ФИО».

Имя столбца

Тип данных

Код ФИО

BigInt, первичный ключ, счетчик

ФИО

nVarChar(62)

            Вручную заполнять таблицу не будем, а напишем процедуру «Sluchaynie_Ludi» для ее заполнения.

USE Человеки;

GO

CREATE PROCEDURE Sluchaynie_Ludi @MaxChel BigInt;

AS

DECLARE @Familiya nVarChar(20),

        @Imya nVarChar(20),

        @Otchestvo nVarChar(20),

        @FIO nVarChar(62),

        @Counter BigInt; /* Счетчик для цикла*/

SET @Counter=1

WHILE @Counter <= @MaxChel

      BEGIN

      -- Случайная ФАМИЛИЯ

      SET @Familiya = (SELECT TOP 1 Фамилия FROM Фамилии ORDER BY NEWID());

 

      -- Случайное ИМЯ

      SET @Imya = (SELECT TOP 1 Имя FROM Имена ORDER BY NEWID());

 

      -- Случайное ОТЧЕСТВО

      SET @Otchestvo = (SELECT TOP 1 Отчество FROM Отчества ORDER BY NEWID());

 

      -- Как бы случайное ФИО

      SET @FIO = @Familiya +' '+ @Imya +' '+ @Otchestvo;

 

      -- Вывод результата в окно сообщений

      PRINT LTRIM(STR(@Counter)) + ' ' + @FIO;

 

      -- Добавление записи в таблицу ФИО

      INSERT INTO ФИО (ФИО)

    VALUES (@FIO)

 

      SET @Counter = @Counter + 1 

    END

 

            Когда процедура создана и записана на ветку «Базы данных – Человеки – Программирование – Хранимые процедуры», ее легко выполнить с помощью запроса.

EXECUTE Sluchaynie_Ludi 10;

/* 10 – это входной параметр, число создаваемых записей*/

            Ниже показан результат генерации случайных и довольно вразумительных записей для таблицы «ФИО».

Рис. 4. Таблица «ФИО», заполненная случайными записями