Bazy Danych - poniedziałek, 15.00 - 18.00 - zadania zestaw 04.

Tworzenie schematu

Stwórz schemat bazy danych który zawiera następujące tabele:

  1. Employees (id, name, surname, birthDate, department, boss). Id jest kluczem, boss jest kluczem referencyjnym i oznacza kto jest szefem danej osoby. Jeśli osoba nie ma szefa to jest tam NULL. Department jest kluczem obcym do tabeli Departments.

  2. Salary (employeeId, amount). EmployeeId jest kluczem obcym do tabeli Employees, amount powinno byc objęte klauzulą check > 0

  3. Departments (id, name, head, description). Name nie może być puste, id jest kluczem, head jest kluczem obcym do tabeli Employees, description może być puste ale nie null.

  4. Projects (id, name, startDate, deadline, budget). Name nie może być puste, id jest kluczem, startDate i deadline musi być wypełnione, budget nie może być < 0.

  5. Assignments(employeeId, projectId). Relacja wiele-do-wielu między projektami a pracownikami.

Wstaw do tabeli następujące dane:

  1. Employees:

    			Robert, Szczelina, 27-071986, NULL, NULL
    			John, Doe, 01-01-1986, NULL, NULL
    			Jan, Kowalski, 16-08-1985, NULL, NULL
    			Jabba, The Hutt, 22-03-1980, NULL, NULL
    			Big, Boss, 22-03-1982, NULL, NULL
    			

  2. Salary:

    			Robert, Szczelina -> 3000
    			John, Doe -> 2500
    			Jan, Kowalski -> 2000
    			Jabba, The Hutt -> 5000
    			Big, Boss -> 10000			
    			

  3. Departments:

    			Finanse, NULL, Dział finansowy
    			IT, NULL, Dział IT			
    			

  4. Projects

    			Rescriptus, 20-10-2011, 31-02-2012, 1 000 000
    			Bookface, 31-06-2011, 30-12-2011, 2 000 000
    			

Zmień dane tak, aby:

  1. szefem działu finansów był Big Boss, a szefem dziłu IT Jabba The Hutt.

  2. szefem pracowników Robert Szczelina i John Doe był Jabba The Hutt, a szefem Jana Kowalskiego Big Boss

  3. do projektu Rescriptus byli przypisani pracownicy Robert Szczelina, Jan Kowalski i Jabba The Hutt, a do projektu Bookface pozostali.

Zmień schemat bazy aby

  1. Kolumny name, surname i birthDate nie mogły się powtarzać. Tzn nie może być dwóch ludzi o imieniu Robert Szczelina i dacie urodzenia 1986-07-27.

  2. Klucz główny w Assignements na obu kolumnach.

Zmodyfikuj schemat bazy tak, aby możliwe było śledzenie zmian w wysokości wynagrodzenia.

  1. Rozwiązanie 1: dodaj w tabeli Salary pole odKiedy oznaczające od kiedy dany pracownik zarabia daną kwotę

  2. Rozwiązanie 2: dodaj w tabeli Salary pole odKiedy i doKiedy oznaczające od kiedy i doKiedy dany pracownik zarabia daną kwotę

  3. Rozwiązanie 3: dodaj w tabeli Employees pole actualSalary a w tabeli Salary pole odKiedy oznaczające od kiedy dany pracownik zarabia daną kwotę. Za każdym razem gdy wstawiana jest nowy wiersz w tabeli Salary, zmodyfikowane powinno być pole w tabeli Empoyees

Dla każdego z powyższych rozwiązań dodaj odpowiednie dane zgodne z poniższym schematem płac:

	Robert Szczelina (01-01-2011 -> 3000, 01-06-2011 -> 3500, 01-09-2011 -> 4000, 01-11-2011 -> 5000)
	John Doe (01-01-2011 -> 2500, 01-09-2011 -> 5000, 01-10-2011 -> 15000)
	Jabba The Hutt (01-03-2011 -> 5000, 01-06-2011 -> 3500, 01-09-2011 -> 10000, 01-11-2011 -> 8000)	
	Jan Kowalski (01-03-2011 -> 2000)
	Big Boss (01-01-2011 -> 10000, 01-06-2011 -> 5000)
	

Mając wstawione dane w kazdym z możliwych schematów napisz następujące zapytania:

  1. Zapytanie które zwróci aktualną pensję pracownika
  2. Pracowników, którzy w jakimkolwiek okresie zarabiali więcej od swojego szefa
  3. Zarobki pracowników na dzień 27-07-2011
  4. Wyrazone w procentach wzrosty (lub spadki) zarobków dla każdego pracownika