Projekt logiczny

1. Projekt bazy

2. Słowniki danych

  • EFUsers – tabela zawierająca dane graczy
    • Id – PK – Integer – unikalny identyfikator użytkownika NOT NULL
    • Login – String – unikalny nick użytkownika NOT NULL
    • PasswordHash – Integer – zakodowane hasło użytkownika NOT NULL
    • Rank – Integer – liczba określająca miejsce w globalnym rankingu NOT NULL
  • EFFriends – tabela zawierająca id graczy będących znajomymi
    • OwnerId – PK, FK – Integer - klucz obcy z tabeli EFUsers NOT NULL
    • FriendId – PK, FK – Integer - klucz obcy z tabeli EFUsers NOT NULL
  • EFMoves – tabela zawierająca dane każdego ruchu gracza
    • MoveId – PK – Integer –identyfikator ruchu NOT NULL
    • GameId – PK, FK – Integer - klucz obcy z tabeli EFGames NOT NULL
    • UserId – FK - Integer - klucz obcy z tabeli EFUsers NOT NULL
    • Word – String – pole tekstowe zawierające słowo w wykonanym ruchu
    • Row – Integer - numer wiersza pierwszej litery słowa
    • Col – Integer - numer kolumny pierwszej litery
    • IsHorizontal – BOOL – określa orientację słowa (poziomo = TRUE, pionowo = FALSE)
    • MoveType – Integer – pole enum określające typ ruchu
  • EFGames – tabela zawierająca informacje o ruchach w danej partii
    • Id – PK – Integer – unikalny identyfikator gry NOT NULL
    • Date – DateTime - pole zawierające date i godzinę rozpoczęcia gry NOT NULL
    • Language - String - pole tekstowe opisujące wybrany język gry NOT NULL
    • TimePerPlayer - Integer - liczba opisująca czas, który upłynął w kolejce danego gracza. Liczony w sekundach NOT NULL
  • EFParticipants – id graczy danej gry
    • UserId – PK, FK – Integer - klucz obcy z tabeli EFUsers NOT NULL
    • GameId – PK, FK – Integer - klucz obcy z tabeli EFGames NOT NULL
  • EFPendingMessages – tabela przechowująca dane wiadomości prywatnych, których adresatem jest gracz offline (id graczy, treść wiadomości)
    • Id – PK – Integer – unikalny identyfikator wiadomości NOT NULL
    • SenderId – FK – Integer - klucz obcy z tabeli EFUsers NOT NULL
    • ReceiverId – FK – Integer - klucz obcy z tabeli EFUsers NOT NULL
    • Date – DateTime - pole zawierające date i godzinę wysłania wiadomości NOT NULL
    • Message – String – treść wiadomości NOT NULL
  • EFSentMessages – zawiera takie same pola jak tabela EFPendingMessages, jednak służy do przechowywania odebranych wiadomości prywatnych
    • Pola takie jak w EFPendingMessages

3. Analiza zależności funkcyjnych i normalizacja tabel

  • 1NF

Wszystkie wartości atrybutów są atomowe. Warunek 1NF jest zatem spełniony

  • 2NF

Warunek 2NF spełniony, ponieważ spełniony jest warunek 1NF, oraz dla zdefiniowanych kluczy nie istnieją podzbiory atrybutów podstawowych, które identyfikują atrybuty wtórne.

  • 3NF

Nie jest spełnione ponieważ występuje zależność częściowa (zależność X → A, gdy X jest właściwym podzbiorem pewnego klucza)

4. Projektowanie operacji na danych

Scrabble wykorzystują bibliotekę EntityFramework do komunikacji z bazą danych. Ułatwia to w dużej mierze komunikację.

Projekt Scrabble wykorzystuje bibliotekę Entity Framework do komunikacji z bazą danych. Entity Framework jest narzędziem typu ORM (ang. Object Relational Mapping). Pozwala ono na budowanie aplikacji dwuwarstwowych i trójwarstwowych.

Przykładowe użycie framework'a:

1) Opis

Dodanie nowego użytkownika do bazy EFUsers wraz z ustalonymi wartościami rekordów

2) Enitity Framework

EFUser user = new EFUser();
              user.Login = name;
              user.PasswordHash = newPassHash;
              user.Id = newId;
              user.Rank = 1000;
              try
              {
              
                  // Entity framework generuje zapytanie SQL
                  context.EFUsers.AddObject(user);
                  context.SaveChanges();
                  p = new Person() { Name = user.Login, Id = user.Id };
              }
              catch (InvalidOperationException)
              {
                  p = null;
              }
              

3) Generowane zapytanie SQL

INSERT INTO EFUsers   (id, Login, PasswordHash, Rank)
VALUES   (name, newPassHash, newId, 1000);

Więcej o framework'u pod adresem: http://msdn.microsoft.com/pl-pl/library/ff714342.aspx

pl/dydaktyka/ztb/2012/projekty/scrabble/projekt_logiczny.txt · ostatnio zmienione: 2019/06/27 15:50 (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