Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Poprzednia wersja
Nowa wersja
Poprzednia wersja
pl:dydaktyka:ztb:2010:projekty:upr_krakow:start [2010/05/27 17:24]
ztb2010
pl:dydaktyka:ztb:2010:projekty:upr_krakow:start [2019/06/27 15:50] (aktualna)
Linia 4: Linia 4:
 ==== Streszczenie ==== ==== Streszczenie ====
 Projekt stanowi podstawę bazodanową dla projektu realizowanego z przedmiotu Technologie i Programowanie WWW.  Projekt stanowi podstawę bazodanową dla projektu realizowanego z przedmiotu Technologie i Programowanie WWW. 
 +[[http://​www.rafal.xtreemhost.com|Link do wersji roboczej serwisu]]
  
 ==== Sformułowanie zadania projektowego ==== ==== Sformułowanie zadania projektowego ====
Linia 69: Linia 70:
     - Zapisanie się do newslettera     - Zapisanie się do newslettera
     - Przeglądanie treści serwisu     - Przeglądanie treści serwisu
-      * Przeglądanie głównych działów serwisu: aktualności,​ książki, publicystyka,​ linki, o partii +      * przeglądanie głównych działów serwisu: aktualności,​ książki, publicystyka,​ linki, o partii 
-      * Możliwość oglądania multimediów+      * możliwość oglądania multimediów
     - Przeszukiwanie treści wiadomości     - Przeszukiwanie treści wiadomości
-    - Możliwość dodawania komentarzy 
-      * Dodawanie komentarzy do aktualności 
-      * Dodawanie komentarzy do felietonów 
-      * Dodawanie komentarzy w dziale multimediów 
-      * Dodawanie komentarzy w dziale książek 
   - Scenariusze dla zalogowanego użytkownika   - Scenariusze dla zalogowanego użytkownika
     - Dostęp do serwisu     - Dostęp do serwisu
-      * Zalogowanie ​do systemu +      * zalogowanie ​do systemu 
-      * Przypomnienie ​hasła użytkownika+      * przypomnienie ​hasła użytkownika
     - Dodawanie felietonów     - Dodawanie felietonów
     - Aktualizacja profilu     - Aktualizacja profilu
       * zmiana adresu email       * zmiana adresu email
       * zmiana hasła       * zmiana hasła
 +    - Możliwość dodawania komentarzy
 +      * dodawanie komentarzy do aktualności
 +      * dodawanie komentarzy do felietonów
 +      * dodawanie komentarzy w dziale multimediów
 +      * dodawanie komentarzy w dziale książek
   - Scenariusze dla redaktora   - Scenariusze dla redaktora
     - Dodawanie tekstów     - Dodawanie tekstów
Linia 94: Linia 95:
     - Zatwierdzanie felietonów dodanych przez użytkowników     - Zatwierdzanie felietonów dodanych przez użytkowników
     - Moderowanie komentarzy     - Moderowanie komentarzy
 +    - Tworzenie wiadomości do wysłania w newsletterze
   - Scenariusze dla administratora   - Scenariusze dla administratora
     - Usuwanie użytkowników     - Usuwanie użytkowników
Linia 99: Linia 101:
       * edycja wiadomości i wpisów we wszystkich działach       * edycja wiadomości i wpisów we wszystkich działach
       * usuwanie wiadomości i wpisów we wszystkich działach       * usuwanie wiadomości i wpisów we wszystkich działach
-      * Dodawanie ​tekstów we wszystkich działach+      * dodawanie ​tekstów we wszystkich działach 
 + 
 +{{:​pl:​dydaktyka:​ztb:​2010:​projekty:​upr_krakow:​use_case.png|}}
  
 ==== Identyfikacja funkcji ==== ==== Identyfikacja funkcji ====
 +
 +  * logowanie i wylogowanie z serwisu
 +  * modyfikacja i usuwanie kont użytkowników
 +  * dodanie, modyfikacja i usuwanie aktualności na pierwszej stronie
 +  * dodanie, modyfikacja i usuwanie multimediów
 +  * dodanie, modyfikacja i usuwanie informacji o spotkaniach
 +  * dodanie, modyfikacja i usuwanie opisów książek
 +  * dodanie, modyfikacja i usuwanie linków oraz informacji o partii
 +  * dodanie, modyfikacja i usuwanie komentarzy pod wpisami
 +  * zapisywanie się i wysyłanie newslettera
 +  * dodawanie własnych felietonów przez użytkowników
  
  
 ==== Analiza hierarchii funkcji projektowanej aplikacji ==== ==== Analiza hierarchii funkcji projektowanej aplikacji ====
  
 +{{:​pl:​dydaktyka:​ztb:​2010:​projekty:​upr_krakow:​fhd.png|}}
  
 ==== Budowa i analiza diagramu przepływu danych ==== ==== Budowa i analiza diagramu przepływu danych ====
  
 +=== DIAGRAM KONTEKSTOWY ===
 +{{:​pl:​dydaktyka:​ztb:​2010:​projekty:​upr_krakow:​dfd_kontekstowe.png|}}
 +
 +=== DIAGRAM GŁÓWNY ===
 +{{:​pl:​dydaktyka:​ztb:​2010:​projekty:​upr_krakow:​dfd_glowny.png|}}
 +
 +=== OBSŁUGA GOŚCIA ===
 +{{:​pl:​dydaktyka:​ztb:​2010:​projekty:​upr_krakow:​dfd_obsluga_goscia.png|}}
 +
 +=== OBSŁUGA UŻYTKOWNIKA ===
 +{{:​pl:​dydaktyka:​ztb:​2010:​projekty:​upr_krakow:​dfd_obsluga_uzytkownika.png|}}
 +
 +=== OBSŁUGA REDKATORA ===
 +{{:​pl:​dydaktyka:​ztb:​2010:​projekty:​upr_krakow:​dfd_obsluga_redaktora.png|}}
 +
 +=== OBSŁUGA ADMINISTARTORA ===
 +{{:​pl:​dydaktyka:​ztb:​2010:​projekty:​upr_krakow:​dfd_obsluga_administratora.png|}}
  
 ==== Wybór encji (obiektów) i ich atrybutów ==== ==== Wybór encji (obiektów) i ich atrybutów ====
  
 +**AKTUALNOSCI**
 +  * id_aktualnosci INT not null (PK)
 +  * naglowek VARCHAR not null
 +  * zawartosc TEXT not null
 +  * data_publikacji DATE not null
 +  * godzina_publikacji TIME not null
 +  * autor INT not null (FK)
 +
 +**INFORMACJE**
 +  * id_informacji INT not null (PK)
 +  * typ VARCHAR
 +  * autor INT not null (FK)
 +  * zawartosc TEXT not null
 +  * data_modyfikacji DATE
 +  * godzina_modyfikacji TIME
 +
 +**KATEGORIE**
 +  * id_kategorii INT not null (PK)
 +  * nazwa VARCHAR not null
 +  * opis TEXT
 +
 +**KOMENTARZE**
 +  * id_komentarza INT not null (PK)
 +  * autor INT not null (FK)
 +  * zawartosc TEXT
 +  * data DATE
 +  * godzina TIME
 +  * id_obiektu INT not null (FK)
 +  * typ VARCHAR not null
 +
 +**KSIAZKI**
 +  * id_ksiazki INT not null (PK)
 +  * nazwa VARCHAR not null
 +  * opis TEXT
 +  * autor INT (FK)
 +  * kategoria INT (FK)
 +
 +**LINKI**
 +  * id_linku INT not null (PK)
 +  * autor INT not null (FK)
 +  * nazwa VARCHAR not null
 +  * opis TEXT
 +  * link VARCHAR not null
 +  * logo VARCHAR not null
 +  * data_dodania DATETIME not null
 +
 +**MEDIA**
 +  * id INT not null (PK)
 +  * link TEXT not null
 +  * nazwa VARCHAR
 +  * autor INT (FK)
 +  * data_dodania DATETIME not null
 +
 +**NEWSLETTER**
 +  * id INT not null (PK)
 +  * tytul VARCHAR not null
 +  * tresc TEXT not null
 +  * zawartosc TEXT not null
 +  * data_wyslania DATE not null
 +  * godzina_wyslania TIME not null
 +  * autor INT not null (FK)
 +
 +**SPOTKANIA**
 +  * id_spotkania INT not null (PK)
 +  * nazwa VARCHAR not null
 +  * opis TEXT
 +  * data_dodania DATETIME
 +  * autor INT (FK)
 +
 +**TEKSTY**
 +  * id_tekstu INT not null (PK)
 +  * naglowek VARCHAR not null
 +  * tresc TEXT not null
 +  * autor INT not null (FK)
 +  * zaakceptowano TINYINT not null
 +  * data_dodania DATETIME not null
 +
 +**UZYTKOWNICY**
 +  * id_uzytkownika INT not null (PK)
 +  * login VARCHAR not null
 +  * haslo VARCHAR not null
 +  * email VARCHAR not null
 +  * imie VARCHAR
 +  * nazwisko VARCHAR
 +  * rola VARCHAR not null
 +  * newsletter TINYINT not null
  
 ==== Projektowanie powiązań (relacji) pomiędzy encjami ==== ==== Projektowanie powiązań (relacji) pomiędzy encjami ====
  
 +{{:​pl:​dydaktyka:​ztb:​2010:​projekty:​upr_krakow:​diagram_relacji.png|}}
  
 ==== Projekt diagramów STD (State Transition Diagram – diagramy przejść pomiędzy stanami) ==== ==== Projekt diagramów STD (State Transition Diagram – diagramy przejść pomiędzy stanami) ====
 +
 +=== Diagram stanów dla użytkownika zalogowanego i gościa ===
 +{{:​pl:​dydaktyka:​ztb:​2010:​projekty:​upr_krakow:​std_user_gosc.png|}}
 +
 +=== Diagram stanów dla redaktora i administratora ===
 +{{:​pl:​dydaktyka:​ztb:​2010:​projekty:​upr_krakow:​std_redaktor_admin.png|}}
 +
 +==== Projektowanie tabel, kluczy, kluczy obcych, powiązań między tabelami, indeksów w oparciu o zdefiniowany diagram ERD ====
 +
 +<code sql>
 +
 +CREATE TABLE IF NOT EXISTS aktualnosci (
 +  id_aktualnosci int(11) NOT NULL AUTO_INCREMENT,​
 +  naglowek varchar(100) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL,
 +  zawartosc text CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL,
 +  data_publikacji date NOT NULL,
 +  godzina_publikacji time NOT NULL,
 +  autor int(11) NOT NULL,
 +  zdjecie mediumblob,
 +  PRIMARY KEY (id_aktualnosci),​
 +  KEY autor (autor)
 +) ENGINE=MyISAM ​ DEFAULT CHARSET=latin1 AUTO_INCREMENT=66 ;
 +
 +CREATE TABLE IF NOT EXISTS informacje (
 +  id_informacji int(11) NOT NULL AUTO_INCREMENT,​
 +  typ varchar(50) CHARACTER SET utf8 COLLATE utf8_polish_ci DEFAULT NULL,
 +  autor int(11) NOT NULL,
 +  zawartosc text CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL,
 +  data_modyfikacji date DEFAULT NULL,
 +  godzina_modyfikacji time DEFAULT NULL,
 +  PRIMARY KEY (id_informacji),​
 +  KEY autor (autor)
 +) ENGINE=MyISAM ​ DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;
 +
 +CREATE TABLE IF NOT EXISTS kategorie (
 +  id_kategorii int(11) NOT NULL AUTO_INCREMENT,​
 +  nazwa varchar(50) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL,
 +  opis text CHARACTER SET utf8 COLLATE utf8_polish_ci,​
 +  autor varchar(100) DEFAULT NULL,
 +  PRIMARY KEY (id_kategorii)
 +) ENGINE=MyISAM ​ DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;
 +
 +CREATE TABLE IF NOT EXISTS komentarze (
 +  id_komentarza int(11) NOT NULL AUTO_INCREMENT,​
 +  autor int(11) NOT NULL,
 +  zawartosc text CHARACTER SET utf8 COLLATE utf8_polish_ci,​
 +  data date DEFAULT NULL,
 +  godzina time DEFAULT NULL,
 +  id_obiektu int(11) NOT NULL,
 +  typ varchar(50) NOT NULL,
 +  PRIMARY KEY (id_komentarza),​
 +  KEY autor (autor),
 +  KEY id_obiektu (id_obiektu)
 +) ENGINE=MyISAM ​ DEFAULT CHARSET=latin1 AUTO_INCREMENT=29 ;
 +
 +CREATE TABLE IF NOT EXISTS komentarz_obiekt (
 +  id_komentarza int(11) NOT NULL,
 +  id_obiektu int(11) NOT NULL,
 +  typ varchar(20) NOT NULL,
 +  PRIMARY KEY (id_komentarza,​id_obiektu),​
 +  KEY id_obiektu (id_obiektu),​
 +  KEY typ (typ)
 +) ENGINE=MyISAM DEFAULT CHARSET=latin1;​
 +
 +CREATE TABLE IF NOT EXISTS ksiazki (
 +  id_ksiazki int(11) NOT NULL AUTO_INCREMENT,​
 +  nazwa varchar(50) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL,
 +  opis text CHARACTER SET utf8 COLLATE utf8_polish_ci,​
 +  autor int(11) DEFAULT NULL,
 +  kategoria int(11) DEFAULT NULL,
 +  PRIMARY KEY (id_ksiazki),​
 +  KEY autor (autor),
 +  KEY kategoria (kategoria)
 +) ENGINE=MyISAM ​ DEFAULT CHARSET=latin1 AUTO_INCREMENT=22 ;
 +
 +CREATE TABLE IF NOT EXISTS linki (
 +  id_linku int(11) NOT NULL AUTO_INCREMENT,​
 +  autor int(11) NOT NULL,
 +  nazwa varchar(50) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL,
 +  opis text CHARACTER SET utf8 COLLATE utf8_polish_ci,​
 +  link varchar(100) NOT NULL,
 +  logo varchar(100) NOT NULL,
 +  data_dodania datetime NOT NULL,
 +  PRIMARY KEY (id_linku),
 +  KEY autor (autor)
 +) ENGINE=MyISAM ​ DEFAULT CHARSET=latin1 AUTO_INCREMENT=12 ;
 +
 +CREATE TABLE IF NOT EXISTS media (
 +  id int(11) NOT NULL AUTO_INCREMENT,​
 +  link text NOT NULL,
 +  nazwa varchar(100) CHARACTER SET utf8 COLLATE utf8_polish_ci DEFAULT NULL,
 +  autor int(11) DEFAULT NULL,
 +  data_dodania datetime NOT NULL,
 +  PRIMARY KEY (id),
 +  KEY autor (autor)
 +) ENGINE=MyISAM ​ DEFAULT CHARSET=latin1 AUTO_INCREMENT=8 ;
 +
 +CREATE TABLE IF NOT EXISTS newsletter (
 +  id int(11) NOT NULL AUTO_INCREMENT,​
 +  tytul varchar(120) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL,
 +  tresc text CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL,
 +  data_wyslania datetime NOT NULL,
 +  autor int(11) NOT NULL,
 +  PRIMARY KEY (id),
 +  KEY autor (autor)
 +) ENGINE=MyISAM ​ DEFAULT CHARSET=latin1 AUTO_INCREMENT=10 ;
 +
 +CREATE TABLE IF NOT EXISTS organizacje (
 +  id_organizacji int(11) NOT NULL AUTO_INCREMENT,​
 +  dodal varchar(50) NOT NULL,
 +  nazwa varchar(50) NOT NULL,
 +  opis text,
 +  link varchar(100) NOT NULL,
 +  logo varchar(100) NOT NULL,
 +  data_dodania datetime NOT NULL,
 +  PRIMARY KEY (id_organizacji)
 +) ENGINE=MyISAM ​ DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
 +
 +CREATE TABLE IF NOT EXISTS spotkania (
 +  id_spotkania int(11) NOT NULL AUTO_INCREMENT,​
 +  nazwa varchar(50) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL,
 +  opis text CHARACTER SET utf8 COLLATE utf8_polish_ci,​
 +  data_dodania datetime DEFAULT NULL,
 +  autor int(11) DEFAULT NULL,
 +  PRIMARY KEY (id_spotkania),​
 +  KEY autor (autor)
 +) ENGINE=MyISAM ​ DEFAULT CHARSET=latin1 AUTO_INCREMENT=8 ;
 +
 +CREATE TABLE IF NOT EXISTS teksty (
 +  id_tekstu int(11) NOT NULL AUTO_INCREMENT,​
 +  naglowek varchar(120) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL,
 +  tresc text CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL,
 +  autor int(11) NOT NULL,
 +  zaakceptowano tinyint(4) NOT NULL DEFAULT '​0',​
 +  data_dodania datetime NOT NULL,
 +  PRIMARY KEY (id_tekstu),​
 +  KEY autor (autor)
 +) ENGINE=MyISAM ​ DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;
 +
 +CREATE TABLE IF NOT EXISTS uzytkownicy (
 +  id_uzytkownika int(11) NOT NULL AUTO_INCREMENT,​
 +  login varchar(50) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL,
 +  haslo varchar(40) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL,
 +  email varchar(40) NOT NULL,
 +  imie varchar(40) CHARACTER SET utf8 COLLATE utf8_polish_ci DEFAULT NULL,
 +  nazwisko varchar(40) CHARACTER SET utf8 COLLATE utf8_polish_ci DEFAULT NULL,
 +  rola varchar(20) NOT NULL DEFAULT '​user',​
 +  newsletter tinyint(4) NOT NULL DEFAULT '​0',​
 +  data_rejestracji datetime DEFAULT NULL,
 +  PRIMARY KEY (id_uzytkownika)
 +) ENGINE=MyISAM ​ DEFAULT CHARSET=latin1 AUTO_INCREMENT=17 ;
 +</​code>​
 +
 +==== Analiza zależności funkcyjnych i normalizacja tabel ====
 +
 +W każdej tabeli atrybuty są w pełni bezpośrednio zależne od klucza głównego, dane przechowywane w bazie są z punktu widzenia implemntacji projektu istotnie atomiczne, więc wydaje nam się, że baza danych spełnia założenia 3NF.
 +
 +==== Projektowanie operacji na danych ====
 +
 +<code sql>
 +SELECT * FROM komentarze JOIN uzytkownicy ON (komentarze.autor = uzytkownicy.id_uzytkownika) WHERE id_obiektu = $id AND typ = '​aktualnosc'​ ORDER BY data DESC, godzina DESC;
 +
 +SELECT * FROM newsletter LEFT JOIN uzytkownicy ON (newsletter.autor = uzytkownicy.id_uzytkownika) WHERE id = $id;
 +
 +SELECT id_uzytkownika,​ login, email FROM uzytkownicy ORDER BY data_rejestracji;​
 +
 +UPDATE teksty ('​naglowek',​ '​tresc',​ '​autor'​) VALUES ($naglowek, $tresc, $autor) WHERE id_tekstu = $id;
 +</​code>​
 +
 +==== Zdefiniowanie interfejsów do prezentacji,​ edycji i obsługi danych ====
 +
 +  * rejestracja użytkownika
 +{{:​pl:​dydaktyka:​ztb:​2010:​projekty:​upr_krakow:​rejestracja.jpg|}}
 +
 +  * logowanie
 +{{:​pl:​dydaktyka:​ztb:​2010:​projekty:​upr_krakow:​logowanie.jpg|}}
 +
 +  * dodawanie komentarza
 +{{:​pl:​dydaktyka:​ztb:​2010:​projekty:​upr_krakow:​dodawanie_komentarza.jpg|}}
 +
 +  * przypomnienie hasła
 +{{:​pl:​dydaktyka:​ztb:​2010:​projekty:​upr_krakow:​przypomnienie_hasla.jpg|}}
 +
 +  * dodawanie tekstu
 +{{:​pl:​dydaktyka:​ztb:​2010:​projekty:​upr_krakow:​dodanie_wiadmosci.jpg|}}
 +
 +  * dodawanie multimediów
 +{{:​pl:​dydaktyka:​ztb:​2010:​projekty:​upr_krakow:​dodanie_multimediow.jpg|}}
 +
 +  * dodawanie książki
 +{{:​pl:​dydaktyka:​ztb:​2010:​projekty:​upr_krakow:​dodawanie_ksiazki.jpg|}}
 +
 +
 +
 +
 +
 +
 +
 +==== Zdefiniowanie panelu sterowania aplikacji ====
 +
 +  * akceptacja tekstów użytkowników
 +{{:​pl:​dydaktyka:​ztb:​2010:​projekty:​upr_krakow:​akceptacja_tekstow.jpg|}}
 +
 +  * edycja linków
 +{{:​pl:​dydaktyka:​ztb:​2010:​projekty:​upr_krakow:​edycja_linku.jpg|}}
 +
 +  * edycja kont użytkowników
 +{{:​pl:​dydaktyka:​ztb:​2010:​projekty:​upr_krakow:​edycja_uzytkownikow.jpg|}}
 +
 +  * edycja wiadomości
 +{{:​pl:​dydaktyka:​ztb:​2010:​projekty:​upr_krakow:​edycja_wiadomosci.jpg|}}
 +
 +  * zarządzanie użytkownikami
 +{{:​pl:​dydaktyka:​ztb:​2010:​projekty:​upr_krakow:​uzytkownicy.jpg|}}
 +
 +  * rozsyłanie newslettera
 +{{:​pl:​dydaktyka:​ztb:​2010:​projekty:​upr_krakow:​wysylanie_newslettera.jpg|}}
 +
pl/dydaktyka/ztb/2010/projekty/upr_krakow/start.1274973850.txt.gz · ostatnio zmienione: 2019/06/27 15:56 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0