Skip to content

spring2013:SQL and graphs

bigbes edited this page Sep 21, 2014 · 1 revision

Homework 1

  1. Добавить сотрудника.
  2. Перевести сотрудника из отдела в отдел. В случае перевода руководителя, переводятся все его подчинённые.
  3. Вывести отдел - начальник, все непосредственные подчинённые.
  4. Вывести список всех "листовых" узлов дерева (сотрудники не имеющие подчинённых).
  5. Вывести список подчинения - руководитель, руководитель руководителя, и т.д. до вершины иерархии.
  6. Вывести количество сотрудников в отделе.
  7. Проверить граф подчинения на отсутствие аномалий (двойное подчинение, отсутствие руководителя и т.д.).
  8. Вывести "ранг" сотрудника - глубину подчинения.
  9. Вывести иерархию в графическом виде (одно значение - на одной строке, отсортировано в порядке подчинения, количество отступов перед именем сотрудника - степень подчинения в иерархии.
  10. Вывести "путь" между двумя сотрудниками - всех непосредственных и промежуточных руководителей сотрудников.

Additional materials

Data
Results (Google Docs Table)

Repositories with Results

(Please, edit page and paste your repo down there)
Евгений Николаев
Андрей Мельников
b filip
Кульпинов Владимир
Михаил Кольцов
Максим Новиков
Кондратьев Михаил
Юрий Кемаев
Максим Филипенко
[Куликов Владислав] (https://github.com/Rayleg/SMDB/)
[Тарабан Илья] (https://gist.github.com/Taraban/10070941)
[Медведев Даниил] (https://github.com/medvdanil/sql)
[Ислам Алибеков] (https://github.com/ialibekov/dbms)

Просьба

Пожалуйста, разделяйте все ваши sql файлы на 12 штук:

  1. Создание схемы
  2. Заполнение массива
  3. С 1 по 10 задачу, каждая задача состоит из хранимой процедуры и примера её использования.

Например, для MySQL:

-- Создание таблицы
user@machine:~$ cat create_table.sql 
DROP TABLE IF EXISTS workers;
CREATE TABLE workers(
    [...]
);
-- Заполнение таблицы
user@machine:~$ cat fill_table.sql 
DELETE FROM workers;
LOAD DATA LOCAL INFILE '~/homework1-data.csv'
INTO TABLE worker
[...];
-- OR
INSERT INTO workers VALUES
    ([...]),
     [...] ;
-- Задача <number>
user@machine:~$ cat <number>.sql
-- Comment to Task <number>
DROP PROCEDURE IF EXISTS proc_name_1;
CREATE PROCEDURE proc_name_1([...])
BEGIN
    [...]
END;
-- Example:
-- CALL proc_name_1([...]);

DROP PROCEDURE IF EXISTS proc_name_2;
CREATE PROCEDURE proc_name_2([...])
BEGIN
    [...]
END;
-- Example:
-- CALL proc_name_2([...]);