Tworzenie schematu
Stwórz schemat bazy danych który zawiera następujące tabele:
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.
Salary (employeeId, amount). EmployeeId jest kluczem obcym do tabeli Employees, amount powinno byc objęte klauzulą check > 0
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.
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.
Assignments(employeeId, projectId). Relacja wiele-do-wielu między projektami a pracownikami.
Wstaw do tabeli następujące dane:
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
Salary:
Robert, Szczelina -> 3000
John, Doe -> 2500
Jan, Kowalski -> 2000
Jabba, The Hutt -> 5000
Big, Boss -> 10000
Departments:
Finanse, NULL, Dział finansowy
IT, NULL, Dział IT
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:
szefem działu finansów był Big Boss, a szefem dziłu IT Jabba The Hutt.
szefem pracowników Robert Szczelina i John Doe był Jabba The Hutt, a szefem Jana Kowalskiego Big Boss
do projektu Rescriptus byli przypisani pracownicy Robert Szczelina, Jan Kowalski i Jabba The Hutt, a do projektu Bookface pozostali.
Zmień schemat bazy aby
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.
Klucz główny w Assignements na obu kolumnach.
Zmodyfikuj schemat bazy tak, aby możliwe było śledzenie zmian w wysokości wynagrodzenia.
Rozwiązanie 1: dodaj w tabeli Salary pole odKiedy oznaczające od kiedy dany pracownik zarabia daną kwotę
Rozwiązanie 2: dodaj w tabeli Salary pole odKiedy i doKiedy oznaczające od kiedy i doKiedy dany pracownik zarabia daną kwotę
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: