Spis treści

Projektowanie tabel, kluczy, kluczy obcych, powiązań między tabelami, indeksów, etc. w oparciu o zdefiniowany diagram ERD

Projekt bazy

skrypt tworzący:
skrypt tworzący

Słowniki danych

testgroups - tabela definiująca grupy testów

models - tabela zawierająca modele/wzorce egzaminów

questions - tabela zawierająca pytania

tests - tabela zawierająca oceniane testy

users - tabela przechowująca użytkowników

roles - tabela przechowująca role

testassignments - tabela zawierająca przypisania użytkowników do ocenianych testów

groups - tabela łącznik pomiędzy users a roles

privileges - tabela łącząca roles z tasks

tasks - tabela zawierająca uprawnienia/przywileje

types - tabela przechowująca rodzaje typów

actions - tabela zawierająca wykonywane akcje

objects - tabela przechowująca obiekty na których są wykonywane akcje

Analiza zależności funkcyjnych i normalizacja tabel

Wszystkie wartości atrybutów są atomowe, zatem zgodnie z definicją, warunek 1NF dla bazy jest spełniony

Wszystkie tabele posiadają klucz główny prosty, zatem postać 2NF również jest zachowana.

Trzecia postać normalna jest spełniona (nie występują relacje tranzytywne) - pola niebędące kluczami są od klucza bezpośrednio zależne.

Postać 3NF na potrzeby projektu jest w zupełności wystarczająca

Projektowanie operacji na danych

Emarking do komunikacji z bazą wykorzystuje bibliotekę Hibernate służącą do mapowania obiektowo-relacyjnego.

Emarking mapując obiekty DAO z wykorzystaniem HibernateTemplate z pakietu narzędziowego Spring Framework, pozwala w łatwy sposób na tworzenie metod, które operują na bazie za nas

Przykładowo, kod metody pobierającej użytkowników z bazy ma postać

public List<User> getAllUsers() 
{	        
      return (List<User>)hibernateTemplate.find("from " + "User");
}


Natomiast zapytanie generowane przez HibernateTemplate wygląda następująco

select group0_.grusername as grusername2_0_, group0_.grrole as grrole2_0_ from groups group0_ where group0_.grusername=?