====== PROJEKT KONCEPTUALNY ======
===== 1. Sformułowanie zadania projektowego. =====
Aplikacja webowa "Wirtualny zeszyt laboratoryjny" będzie umożliwiała dokumentację pracy w laboratorium biologiczno-chemicznym. Każdy eksperyment będzie należał do zdefiniowanej dziedziny, np. mikrobiologia, nanotechnologia czy reakcje zwierząt na podawane substancje. Dziedziny mogą być zarządzane tylko przez kadrę kierowniczą laboratorium. Pracownicy laboratorium będą mogli zakładać swoje projekty pod danym kierunkiem badań, dajmy na to w sekcji mikrobiologia można prowadzić badania nad szczepionką grypy. Do projektów zostaną przypisane dzienniki (logi), w których możliwy będzie zapis obserwacji, wyników i wniosków, a także ich edycja, o ile użytkownik będzie miał nadane do tego prawo. Każdy eksperyment będzie miał swój status (nowy, realizowany, udany, nieudany, zamknięty). Pracownicy będą mogli przypisywać eksperymentom załączniki w formie różnych plików (zdjęcia, pliki tekstowe, pliki binarne, arkusze kalkulacyjne) oraz próbek do płytek laboratoryjnych. Każdy projekt będzie można powiązać z innym oraz wydzielić podzagadnienia (podprojekty). Oprócz dokumentacji system powinien wykazywać na podstawie wyników poszczególnych badań, która gałąź rozwoju (dziedzina) ma najlepsze osiągnięcia, co pozwoli na sugerowanie kadrze kierowniczej kierunku badań następnych eksperymentów, czyli w co najopłacalniej inwestować.
===== 2. Analiza stanu wyjściowego. =====
W sieci istnieje wiele projektów, które umożliwiają prowadzenie dokumentacji prac nad pewnymi zagadnieniami.
Jednym z bardziej znanych jest [[http://www.redmine.org|External Link]], na którym będziemy się lekko wzorować.
System Redmine pozwala na wystawianie nowych zadań, w których możemy dokładniej opisać problem, wyszacować czas realizacji,
przypisać do konkretnej osoby, zmieniać status, prowadzić dziennik itp.
===== 3. Analiza wymagań użytkownika (wstępna). =====
Dostęp do systemu Zeszytu laboratoryjnego będzie ściśle prywatny, tzn. osoby z zewnątrz, niepracujące w laboratorium nie będą miały do niego dostępu. Użytkowników naszego systemu można z grubsza podzielić na 2 grupy: kadrę kierowniczą oraz kadrę pracowniczą.
a) kadra kierownicza:
- kierownik – ma prawa do zakładania nowych dziedzin (kierunków badań) i ich edycji. Może dodawać i zarządzać projektami. Do najważniejszych jego funkcji wchodzi prawo do zakładania nowych kont dla pracowników i nadawaniu im praw.
b) kadra pracownicza:
- pracownik-manager - ma prawo do zakładania i zarządzania projektami z dziedziny, do której jest przypisany.
- pracownik – ma prawo do zarządzania projektami, do których jest przypisany. Poprzez zarządzanie projektem mamy na myśli prowadzenie dziennika, dodawanie materiałów do projektu, zarządzanie statusem.
===== 4. Określenie scenariuszy użycia: =====
==== Logowanie użytkownika ====
Jedynym sposobem dostępu do serwisu jest zalogowanie. Pracownicy logują się na swoje konto. Po wprowadzeniu swojego loginu i hasła pracownik zostaje przekierowany na stronę panelu użytkownika.
Panel dostępu różni się funkcjonalnością w zależności od pozycji pracownika w hierarchii firmy (pracownik, manager, kierownik). \\
\\
==== Możliwości pracownika: ====
**Dane osobowe** - Możliwość podglądu/edycji swoich danych osobowych. Funkcjonalność możliwa do osiągnięcia poprzez:
* panel operatorski
* z podglądu projektu - wybieramy użytkownika z listy uczestniczących w projekcie
* ze strony edycji danych osobowych
**Lista projektów** - Wyświetla listę projektów w których uczestniczy. Funkcjonalność dostępna z panelu operacyjnego\\
**Edytuj wpis** - Funkcjonalność dostępna podczas przeglądaniu swoich wpisów.\\
**Dodaj wpis** - Możliwe podczas przeglądania dziennika.\\
**Edytuj projekt** - Możliwe podczas przeglądania projektu lub podglądu projektu. Edycja polega na zmianie statusu \\
==== Możliwości managera: ====
**Dane osobowe** - tak jak pracownik\\
**Lista projektów** - wyświetla listę projektów ze swojej specjalizacji. Funkcjonalność dostępna z panelu operacyjnego.\\
**Edytuj wpis** - Funkcjonalność dostępna podczas przeglądaniu swoich wpisów.\\
**Dodaj wpis** - Możliwe podczas przeglądania dziennika.\\
**Edytuj projekt** - Możliwe podczas przeglądania projektu lub podglądu projektu. \\
**Dodaj/Usuń projekt** - dostępne z panelu operatorskiego. Możliwość dodania nowego projektu w wybrane miejsce w hierarchii.\\
**Usuń wpis** - Możliwe podczas przeglądania dziennika. Możliwość usuwania wpisów innych pracowników. \\
==== Możliwości kierownika: ====
**Dane osobowe** - tak jak kierownik\\
**Lista projektów** - wyświetla listę wszystkich projektów. Funkcjonalność dostępna z panelu operacyjnego.\\
**Edytuj wpis** - Funkcjonalność dostępna podczas przeglądaniu swoich wpisów.\\
**Dodaj wpis** - Możliwe podczas przeglądania dziennika.\\
**Edytuj projekt** - Możliwe podczas przeglądania projektu lub podglądu projektu. \\
**Dodaj/Usuń projekt** - dostępne z panelu operatorskiego. Możliwość dodania nowego projektu w wybrane miejsce w hierarchii.\\
**Dodawanie/usuwanie/edytowanie** kont wszystkich pracowników. Dostępne z listy pracowników, którą można przeglądać poprzez panel operatorski. \\
**Usuń wpis** - Możliwe podczas przeglądania dziennika. Możliwość usuwania wpisów innych pracowników. \\
===== 5. Identyfikacja funkcji: =====
* dodawanie/edycja/usuwanie pracownikow dla kierowników\\
* logowanie\\
* podgląd/edycja danych osobowych użytkownika\\
* dodawanie dziedziny\\
* wylistowanie dostępnych dla użytkownika projektów\\
* wyświetlenie profilu projektu
* dodawanie/edytowanie/usuwanie projektu
* podgląd pracowników przypisanych do projektu
* dodawanie/edytowanie/usuwanie wpisów dziennika
* dodawanie/usuwanie zasobów projektu
===== 6. Analiza hierarchii funkcji projektowanej aplikacji: =====
{{:pl:dydaktyka:sbd:2012:projekty:lab2:fhd.png|}}
===== 7. DFD – opcjonalnie: Budowa i analiza diagramu przepływu danych =====
===== 8. Wybór encji (obiektów) i ich atrybutów. Relacje: =====
WORKER_STATUS \\
* id INTEGER UNSIGNED (primary key)\\
* name VARCHAR\\
\\
RESEARCH_PATHS \\
* id INTEGER UNSIGNED (primary key)\\
* name VARCHAR \\
* description TEXT\\
\\
PROJECT_STATUS\\
* id INTEGER UNSIGNED (primary key)\\
* name VARCHAR \\
\\
PROJECTS \\
* id INTEGER UNSIGNED (primary key)\\
* name VARCHAR \\
* description TEXT\\
* creation_date DATE \\
* project_status_id INTEGER (foregin key)\\
* research_paths_id INTEGER (foregin key)\\
* workers_id INTEGER (foregin key)\\
\\
WORKERS\\
* id INTEGER UNSIGNED (primary key)\\
* login VARCHAR \\
* passwd CHAR(40)\\
* name VARCHAR \\
* surname VARCHAR\\
* email VARCHAR\\
* birthday DATE\\
* address TEXT\\
* phone_number VARCHAR\\
* title VARCHAR\\
* research_paths_id INTEGER UNSIGNED (foregin key)\\
* worker_status_id INTEGER UNSIGNED (foregin key)\\
\\
PROJECT_LOGS\\
* id INTEGER UNSIGNED (primary key)\\
* workers_id INTEGER UNSIGNED (foregin key)\\
* projects_id INTEGER UNSIGNED (foregin key)\\
* date DATE\\
* observations TEXT\\
* conclusions TEXT\\
* scores_id INTEGER UNSIGNED (foregin key)\\
\\
RESOURCES\\
* id INTEGER UNSIGNED (primary key)\\
* url VARCHAR NOT NULL\\
\\
SCORES\\
* id INTEGER UNSIGNED (primary key)\\
* score INTEGER \\
\\
PROJECTS_HAS_RESOURCES\\
* projects_id INTEGER UNSIGNED (foregin key)\\
* resources_id INTEGER UNSIGNED (foregin key)\\
\\
PROJECTS_HAS_WORKERS\\
* projects_id INTEGER UNSIGNED (foregin key)\\
* workers_id INTEGER UNSIGNED (foregin key)\\
\\
===== 9. Projekt diagramów STD: =====
{{:pl:dydaktyka:sbd:2012:projekty:lab2:std.png|}}
====== PROJEKT LOGICZNY ======
===== Diagram ERD przedstawiający schematy tabel (wraz z atrybutami) i związki pomiędzy nimi w notacji Barkera/Oracle: =====
{{:pl:dydaktyka:sbd:2012:projekty:lab2:erd.png|}}
===== Tablica krzyżowa =====
{{:pl:dydaktyka:sbd:2012:projekty:lab2:cross-array.png|}}
===== Projekt bazy w języku SQL (DDL) =====
CREATE TABLE WORKER_STATUS ( \\
id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,\\
name VARCHAR NOT NULL,\\
PRIMARY KEY(id),\\
); \\
CREATE TABLE RESEARCH_PATHS ( \\
id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,\\
name VARCHAR NOT NULL,\\
description TEXT,\\
PRIMARY KEY(id)\\
); \\
CREATE TABLE PROJECT_STATUS( \\
id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,\\
name VARCHAR NOT NULL,
PRIMARY KEY(id),\\
); \\
CREATE TABLE PROJECTS ( \\
id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,\\
name VARCHAR NOT NULL,\\
description TEXT,\\
creation_date DATE NOT NULL,\\
project_status_id INTEGER UNSIGNED,\\
research_paths_id INTEGER UNSIGNED,\\
workers_id INTEGER UNSIGNED,\\
PRIMARY KEY(id),\\
FOREIGN KEY (project_status_id) REFERENCES PROJECT_STATUS (id),\\
FOREIGN KEY (research_paths_id) REFERENCES RESEARCH_PATHS (id),\\
FOREIGN KEY (workers_id) REFERENCES WORKERS (id)\\
); \\
CREATE TABLE WORKERS ( \\
id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,\\
login VARCHAR NOT NULL,\\
passwd CHAR(40),\\
name VARCHAR NOT NULL,\\
surname VARCHAR NOT NULL,\\
email VARCHAR,\\
birthday DATE,\\
address TEXT,\\
phone_number VARCHAR,\\
title VARCHAR,\\
research_paths_id INTEGER UNSIGNED,\\
worker_status_id INTEGER UNSIGNED,\\
PRIMARY KEY(id),\\
FOREIGN KEY (research_paths_id) REFERENCES RESEARCH_PATHS (id),\\
FOREIGN KEY (worker_status_id) REFERENCES WORKERS (id)\\
); \\
CREATE TABLE PROJECT_LOGS ( \\
id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,\\
workers_id INTEGER UNSIGNED,\\
projects_id INTEGER UNSIGNED,\\
date DATE,\\
observations TEXT,\\
conclusions TEXT,\\
scores_id INTEGER UNSIGNED,\\
PRIMARY KEY(id),\\
FOREIGN KEY (workers_id) REFERENCES WORKERS (id),\\
FOREIGN KEY (projects_id) REFERENCES PROJECTS (id),\\
FOREIGN KEY (scores_id) REFERENCES SCORES (id),\\
); \\
CREATE TABLE RESOURCES( \\
id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,\\
url VARCHAR NOT NULL,\\
PRIMARY KEY(id),\\
); \\
CREATE TABLE SCORES( \\
id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,\\
score INTEGER NOT NULL,\\
PRIMARY KEY(id),\\
); \\
CREATE TABLE PROJECTS_HAS_RESOURCES( \\
projects_id INTEGER UNSIGNED,\\
resources_id INTEGER UNSIGNED,\\
FOREIGN KEY (projects_id) REFERENCES PROJECTS (id),\\
FOREIGN KEY (resources_id) REFERENCES RESOURCES (id),\\
); \\
CREATE TABLE PROJECTS_HAS_WORKERS( \\
projects_id INTEGER UNSIGNED,\\
workers_id INTEGER UNSIGNED,\\
FOREIGN KEY (projects_id) REFERENCES PROJECTS (id),\\
FOREIGN KEY (workers_id) REFERENCES WORKERS (id),\\
); \\
===== Słowniki danych =====
dozwolony-znak-alf = [ A-Z | a-z | - | ] dozwolony-znak-alfnum = [ A-Z | a-z | - | 1-9 | ]\\
Ścieżki rozwoju (RESEARCH PATHS):\\
Nazwa (name) – nazwa dziedziny badań\\
Opis – krótki opis dziedziny badań, czyli specyfikacja jakimi ogólnie tematami zajmują się pracownicy tej dziedziny\\
__**Projekty (PROJECTS):**__\\
**Nazwa** (name) – krótka nazwa projektu.\\
**Opis** (description) – opis projektu, czyli co dokładnie jest w nim realizowane i jakich rezultatów się spodziewamy\\
**Data utworzenia** (creation_date) – data dodania projektu do wirtualnego zeszytu laboratoryjnego\\
**Dziedzina badań** (relacja z RESEARCH_PATHS) – dziedzina badań, pod którą realizowany jest projekt.\\
**Autor projektu** (relacja bezpośrednia z WORKERS) – pracownik, który utworzył projekt.\\
**Przypisani pracownicy** (relacja z PROJECT_HAS_WORKERS) – do projektu mogą być przypisani przez kierownika lub managera pracownicy, dzięki czemu mają oni do niego dostęp, mogą dodawać wpisy do dziennika projektu, a także edytować projekt.\\
Przypisane zasoby (relacja z PROJECT_HAS_RESOURCES) – do projektu możemy dodawać zasoby w formie adresów URL plików (obrazki, arkusze kalkulacyjne, płytki badawcze), które są w internecie lub serwerze lokalnym.\\
**Status projektu** (relacja z PROJECT_STATUS):\\
statusu projektu. Będą to: "Nowy", "W realizacji", "Zawieszony", "Zakończony sukcesem", "Zakończony niepowodzeniem" (lub inne, zdefiniowane przez odbiorcę).\\
__**Pracownicy (WORKERS):**__\\
Jest to tabela wszystkich pracowników, a zarazem wszystkich użytkowników systemu.\\
**Login** (login) – nazwa użytkownika w systemie, za pomocą której będzie mógł przejść przez etap uwierzytelniania. Login jest definiowany przez kierownika przy tworzeniu nowego konta.\\
**Hasło dostępu** (passwd) – przy uwierzytelnianiu użytkownik musi podać nie tylko swój login, ale także tajne hasło. Hasło jest generowane przez kierownika przy tworzeniu nowego konta. Użytkownik po zalogowaniu może je zmienić.\\
**Imię** (name) – imię pracownika.\\
**Nazwisko** (surname) – nazwisko pracownika.\\
**Adres e-mail** (email) – kontakt e-mailowy, za pomocą którego możemy korespondować z pracownikiem.\\
**Data urodzin** (birthday) – data urodzenia pracownika.\\
**Adres zamieszniania** (address) – dokładny adres zamieszkania pracownika.\\
**Numer telefonu** (phone_number) – numer (bądź numery) telefonu(/ów) do pracownika. Jeśli jest ich więcej niż jeden, to należy je wymieniać po przecinku.\\
** Tytuł** (title) – tytuł naukowy pracownika (np. inż., mgr, wykształcenie średnie).\\
**Dziedzina badań** (relacja z RESEARCH_PATHS) – referencja do dziedziny badań, w której pracownik się specjalizuje. Zdefiniowanie tej dziedziny rzutuje na możliwości managera lub pracownika w systemie. Za sprawą tego atrybutu zyskują prawa dostępu – manager do wszystkich projektów ze swojej dziedziny; pracownik do projektów ze swojej dziedziny, do których jest przypisany).\\
**Stanowisko pracownika** (relacja z WORKER_STATUS) – nazwa stanowiska pracownika. Będą to: "Kierownik", "Manager", "Pracownik"\\
__**Wpisy do dziennika projektu (PROJECT_LOGS):**__\\
**Autor wpisu** (relacja z WORKERS) – pracownik, który dokonał wpisu do dziennika\\
**Data** (data) – data utworzenia wpisu\\
**Obserwacje** (observations) – obserwacje w wnioski pracownika, który dokonuje wpis, na temat eksperymentu.\\
**Wnioski** (conclusions) – wnioski wysnute przez dokonującego wpis na podstawie obserwacji\\
**Wynik** (relacja ze SCORES) - liczba od 1 do 10, która jest dopisywana przy każdym wpisie i wyraża stopień satysfakcji realizacji projektu. Średnia arytmetyczna wyników ze wszystkich wpisów dziennika projektu jest wyświetlana w podglądzie projektu. Jest to najprostszy system oceny rezultatów projektów, dzięki czemu można wprowadzić system wspomagania podejmowania decyzji, w które ścieżki badań najlepiej inwestować.\\
===== Analiza zależności funkcyjnych i normalizacja tabel =====
Dane we wszystkich tabelach są atomiczne, wszystkie atrybuty są kluczowe oraz nie ma zależności tranzytywnych. Przeprowadziliśmy normalizację 1NF, 2NF, 3NF zgodnie z algorytmem podanym na wykładzie.
===== Projektowanie operacji na danych =====
**Dodawanie nowego pracownika przez kierownika:** \\
Walidacja, czy użytkownik o podanym loginie już istnieje: \\ \\
//SELECT * FROM WORKERS \\
WHERE login = login_new;// \\ \\
Jeśli zapytanie zwróci 0 rekordów to dodajemy użytkownika: \\ \\
//INSERT INTO WORKERS(login, passwd, name, surname, research_status_id, worker_status_id) \\
VALUES (login_new, passwd_new, name_new, surname_new, research_status_id_new, worker_status_id_new);// \\ \\
Kierownik nie uzupełnia na tym etapie danych szczegółowych pracownika.\\ \\
**Edycja konta:** \\ \\
//UPDATE WORKERS \\
SET passwd = passwd_new,\\
name = name_new,\\
surname = surname_new,\\
email = email_new,\\
birthday = birthday_new,\\
address = address_new,\\
phone_number = phone_number_new,\\
title = title_new,\\
WHERE login = login_new// \\ \\
**Usuwanie konta:** \\ \\
//DELETE FROM WORKERS \\
WHERE login = login_new // \\ \\
**Lista projektów: ** \\ \\
* Kierownik:
//SELECT name FROM PROJECTS \\
ORDER BY research_paths_id ASC// \\ \\
* Manager:
//SELECT name FROM PROJECTS \\
WHERE research_path_id = manager.research_path_id// \\ \\
* Pracownik:
//SELECT p.name FROM PROJECTS p \\
JOIN PROJECTS_HAS_WORKERS phw ON phw.projects_id = p.id \\
WHERE phw.workers_id = user_id//
\\
====== RAPORT KONCOWY ======
- **Implementacja bazy danych**
CREATE TABLE IF NOT EXISTS `projects` (
`id` int(16) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL,
`description` text NOT NULL,
`creation_date` date NOT NULL,
`project_status_id` int(16) unsigned NOT NULL DEFAULT '1',
`research_paths_id` int(16) unsigned NOT NULL,
`workers_id` int(16) unsigned NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`),
KEY `project_status_id` (`project_status_id`),
KEY `research_paths_id` (`research_paths_id`),
KEY `workers_id` (`workers_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=8 ;
CREATE TABLE IF NOT EXISTS `projects_has_resources` (
`projects_id` int(16) unsigned NOT NULL,
`resources_id` int(16) unsigned NOT NULL,
KEY `projects_id` (`projects_id`),
KEY `resources_id` (`resources_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE IF NOT EXISTS `projects_has_workers` (
`projects_id` int(16) unsigned NOT NULL,
`workers_id` int(16) unsigned NOT NULL,
KEY `workers_id` (`workers_id`),
KEY `projects_id` (`projects_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE IF NOT EXISTS `project_logs` (
`id` int(16) unsigned NOT NULL AUTO_INCREMENT,
`workers_id` int(16) unsigned NOT NULL,
`projects_id` int(16) unsigned NOT NULL,
`date` date NOT NULL,
`observations` text NOT NULL,
`conclusions` text NOT NULL,
`scores_id` int(16) unsigned NOT NULL,
PRIMARY KEY (`id`),
KEY `projects_id` (`projects_id`),
KEY `scores_id` (`scores_id`),
KEY `workers_id` (`workers_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;
CREATE TABLE IF NOT EXISTS `project_status` (
`id` int(16) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(20) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
CREATE TABLE IF NOT EXISTS `research_paths` (
`id` int(16) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(30) NOT NULL,
`description` text NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=10 ;
CREATE TABLE IF NOT EXISTS `resources` (
`id` int(16) unsigned NOT NULL AUTO_INCREMENT,
`url` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
CREATE TABLE IF NOT EXISTS `scores` (
`id` int(16) unsigned NOT NULL AUTO_INCREMENT,
`score` int(16) unsigned NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `score` (`score`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;
CREATE TABLE IF NOT EXISTS `workers` (
`id` int(16) unsigned NOT NULL AUTO_INCREMENT,
`login` varchar(50) NOT NULL,
`passwd` char(40) NOT NULL,
`name` varchar(15) NOT NULL,
`surname` varchar(15) NOT NULL,
`email` varchar(30) NOT NULL,
`birthday` date NOT NULL,
`address` text NOT NULL,
`phone_number` varchar(50) NOT NULL,
`title` varchar(15) NOT NULL,
`research_paths_id` int(16) unsigned DEFAULT NULL,
`worker_status_id` int(16) unsigned DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `worker_status_id` (`worker_status_id`),
KEY `research_paths_id` (`research_paths_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
CREATE TABLE IF NOT EXISTS `worker_status` (
`id` int(16) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(20) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
- **Wprowadzenie danych:**
INSERT INTO `projects` (`id`, `name`, `description`, `creation_date`, `project_status_id`, `research_paths_id`, `workers_id`) VALUES
(3, 'Badania rozmnazania paciorkowców', 'Czyli w skrocie, jak one to robia.', '2012-12-05', 1, 1, 1),
(4, 'Badania nad lekiem na raka', 'Zaawansowane badania', '2012-12-06', 1, 1, 1),
(5, 'Szczepionka zoltaczki', 'By na zoltaczke odpornosc zwiekszyc.', '2012-12-01', 1, 2, 1),
(6, 'Badanie Holterowskie', 'Implementacja algorytmow wykrywania wad serca', '2012-12-06', 1, 9, 1),
(7, 'Pieczarek par szesc', 'Opis..', '2012-12-06', 1, 3, 3);
INSERT INTO `projects_has_workers` (`projects_id`, `workers_id`) VALUES
(3, 2),
(5, 2);
INSERT INTO `project_logs` (`id`, `workers_id`, `projects_id`, `date`, `observations`, `conclusions`, `scores_id`) VALUES
(1, 1, 5, '2012-12-06', 'MOJE OBSERWACJE, MOJE SUPER OBSERWACJE,MOJE SUPER ', 'I jESZczeze wnio', 1),
(2, 2, 5, '2012-12-07', 'efefewfwfwefewfw', 'wefwefwefwefwefwefwefwefwefewfewfewfwefw', 5),
(3, 1, 5, '2012-12-06', 'loooool', 'looool2', 5),
(4, 1, 6, '2012-12-07', 'Pieknie sie rozwijaja', 'Bedzie cudownie', 6),
(5, 1, 7, '2012-12-10', 'nfejejf', 'wkefnjf', 6);
INSERT INTO `project_status` (`id`, `name`) VALUES
(1, 'Nowy'),
(2, 'W realizacji');
INSERT INTO `research_paths` (`id`, `name`, `description`) VALUES
(1, 'Mikrobiologia', 'Biologia w ?wiecie mikro. Nawet nie chrz?szcze, tylko jeszcze mniejsze: bakteryjki, wiruski i inne ustrojstwa.'),
(2, 'Szczepionki', 'Proby wynalezienia szczepionek na rozne wirusy.'),
(3, 'Hodowla pieczarek', 'Hodowla pieczarek Hodowla pieczarek Hodowla pieczarekHodowla pieczarekHodowla pieczarek Hodowla pieczarek Hodowla pieczarek Hodowla pieczarek'),
(9, 'Telemedycyna', 'Dziedzina dotyczyny rozwiazan informatycznych w dziedzinie medycyny. ');
INSERT INTO `scores` (`id`, `score`) VALUES
(1, 1),
(2, 2),
(3, 3),
(5, 4),
(6, 5);
INSERT INTO `workers` (`id`, `login`, `passwd`, `name`, `surname`, `email`, `birthday`, `address`, `phone_number`, `title`, `research_paths_id`, `worker_status_id`) VALUES
(1, 'pracus', '99efc50a9206bde3d7a8e694aad8e138ca7dc3f7', 'Adamus', 'Styrcus', 'imie.nazwisko@mail.mail', '2012-07-28', 'mieszkam na budryka 4', '123123123', 'mgr.', 1, 1),
(2, 'lekki', '403926033d001b5279df37cbbe5287b7c7c267fa', 'Basia', 'Basia', '', '2012-12-05', '', '', 'nikt', 1, 3),
(3, 'ops', '403926033d001b5279df37cbbe5287b7c7c267fa', 'Maciej', 'Maciej', '', '0000-00-00', '', '', '', 3, 2);
INSERT INTO `worker_status` (`id`, `name`) VALUES
(1, 'Kierownik'),
(2, 'Manager'),
(3, 'Pracownik');
- **Zdefiniowanie interfejsów do edycji i obsługi danych**
Widok panelu Kierownika:\\
{{:pl:dydaktyka:sbd:2012:projekty:lab2:1.png|}}\\
Widok zakładki 'Dane osobiste':\\
{{:pl:dydaktyka:sbd:2012:projekty:lab2:2.png|}}\\
Widok zakładki 'Projekty':\\
{{:pl:dydaktyka:sbd:2012:projekty:lab2:3.png|}}\\
Widok wybranego badania:\\
{{:pl:dydaktyka:sbd:2012:projekty:lab2:4.png|}}\\
Widok podstrony na której dodajemy nowy wpis do Dziennika:\\
{{:pl:dydaktyka:sbd:2012:projekty:lab2:5.png|}}\\
Widok podstrony na której dodajemy nową dziedzinę:\\
{{:pl:dydaktyka:sbd:2012:projekty:lab2:6.png|}}\\
Widok podstrony na której dodajemy nowego pracownika:\\
{{:pl:dydaktyka:sbd:2012:projekty:lab2:7.png|}}\\
Widok panelu Pracownika:\\
{{:pl:dydaktyka:sbd:2012:projekty:lab2:8.png|}}\\
Widok podstrony z listą pracowników:\\
{{:pl:dydaktyka:sbd:2012:projekty:lab2:9.png|}}\\
Widok Panelu użytkownika Mangera:\\
{{:pl:dydaktyka:sbd:2012:projekty:lab2:10.png|}}\\
Widok podstrony na której dodajemy nowy projekt:\\
{{:pl:dydaktyka:sbd:2012:projekty:lab2:11.png|}}\\
Widok podsumowujący Projekt:\\
{{:pl:dydaktyka:sbd:2012:projekty:lab2:13.png|}}\\
-// **Opcjonalnie: Zdefiniowanie dokumentów do prezentacji danych** \\
Widok Dziennika projektu:\\
{{:pl:dydaktyka:sbd:2012:projekty:lab2:12.png|}}\\
-// **Uruchomianie i testowanie aplikacji** \\
* Stworzenie bazy danych.
* Dodanie niezbędnych danych do bazy (pracowników, projektów).
* Uruchomienie aplikacji.
\\
// **Opcjonalnie: Określenie kierunków rozwoju aplikacji, ocena możliwości jej modyfikacji.** Czy na wcześniejszych etapach została uwzględniona elastyczność i możliwość reakcji na częściową zmianę wymagań?\\
\\
* Dodanie nowych baz do przechowywania innych danych (np danych służących do zbierania informacji o wykonywanych badaniach)\\
* Layout umożliwiający lepsze nawigowanie po sytemie\\
* Moduł pozwalający na generowanie statystyk i raportów z wykonanych badań\\
* Moduł pozwalający na zapisywanie i powiadamianie o konferencjach, ważnych wydarzeniach\\
\\ \\
**Wykaz literatury, załączniki.**
\\
* [[http://www.postgresql.org/docs/manuals/]] \\
* [[http://www.w3schools.com/php/default.asp]]\\
* [[http://php.net/manual/pl/]] \\