Projekt logiczny
1. Schemat bazy
2. Słowniki danych
Składnia słownika:
= składa się z, zdefiniowany jako
+ i, oraz
() wybór opcji
{} powtarzanie
[] wybór z kilki możliwości
| oddzielenie możliwości wyboru
** komentarz, opis
@ klucz identyfikator
Identyfikatory ogólne:
Ciąg znaków – polskie znaki diakrytyczne(pl) = {A – Z | a – z | 0 – 9 | _ | - | ą | ć | ę | ł | ń | ó | ś | ź | ż | Ą | Ć | Ę | Ł | Ń | Ó | Ś | Ź | Ż}
Ciąg znaków = {A – Z | a – z | 0 – 9}
Znak = {A – Z | a – z | 0 – 9}
Znaki specjalne = {! | „ | # | $ | % | & | ' | ( | ) | * | + | , | - | . | / | ;
| < | = | > | ? | @ | [ | \ | ] | ^ | _ | ` | { | | | } | ~}
Liczba = {0 – 9}
Czas = GG + MM + SS
GG = [1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 23 | 24]
*Godziny*
MM = [01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 |
46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60]
*Minuty*
SS = [01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 12 | 13 | 14 | 15
| 16 | 17 | 18 | 19 | 20 | 21 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31
| 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46
| 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60]
*Sekundy*
Data = DD + MM + YYYY
DD = [1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 23 | 24 | 25 | 26 | 27 | 28 | (29) | (30) | (31)]
*Dni miesiąca*
MM = [1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12]
*Miesiące*
YYYY = 0000 – 9999
*rok*
3. Analiza zależności funkcyjnych i normalizacja tabel
1. Pierwsza postać normalna (1NF):
Relacja jest w pierwszej postaci normalnej, jeśli wartości atrybutów
są elementarne (atomowe, niepodzielne) - są to pojedyncze
wartości określonego typu, a nie zbiory wartości. Tabela reprezentująca
tę relację nie zawiera powtarzających się grup informacji.
Każda kolumna jest wartością skalarną (atomową), a nie macierzą
lub listą czy też czymkolwiek, co posiada własną strukturę.
2. Druga postać normalna (2NF):
Relacja jest w drugiej postaci normalnej wtedy i tylko wtedy gdy
jest w I postaci normalnej i każda kolumna zależy funkcyjnie od
całego klucza głównego (a nie np. od części klucza).
3. Trzecia postać normalna (3NF):
Mamy z nią do czynienia wtedy i tylko wtedy, gdy tabela jest
w 2NF oraz gdy wszystkie pola nie będące polami klucza głównego
są od niego zależne.
4. Czwarta postać normalna (4NF):
Relacja jest w czwartej postaci normalnej, jeżeli zawsze wtedy kiedy
zbiór atrybutów X określa wartościowo Y, to zachodzi jeden
z następujących warunków:
- Y jest puste lub zawiera się w X,
- Suma zbiorów X i Y jest pełnym zbiorem atrybutów,
- X zawiera klucz.
5. Postać normalna Boyce'a-Codda (BCNF):
W tej postaci zależności funkcyjne muszą mieć następującą postać:
jeżeli X → A i atrybut A nie jest zawarty w X, to X jest kluczem lub
zawiera klucz.
4. Projektowanie operacji na danych
pobranie id dla przykładowego imienia:
SELECT id_name FROM table_names WHERE table_names.name = 'Tomasz'
gdy nie ma, dodanie imienia:
INSERT INTO table_names(name) VALUES('Tomasz');
pobranie id nazwiska:
SELECT id_surname FROM table_surname WHERE table_surname.surname = 'Wiktor';
gdy nie ma:
INSERT INTO table_surname(surname) VALUES('Wiktor');
dodanie zawodnika:
INSERT INTO users(id_name,id_surname,user_nic,email,password,description,type_accound,is_root,is_blocked)
VALUES(1,1,'zawody','zawody@zawody.pl','haslo w md5','przykladowy opis',1,'0','0');
dodanie do grupy:
INSERT INTO user_conn_group(id_user,id_group,status)
VALUES (2,2,1);
przykładowe dodanie zawodów:
INSERT INTO games(id_module,id_user_prod,date_create,date_start,date_close_list,subject,description,active,localization)
VALUES (3,2,'2012-01-01 00:00','2012-01-02 00:00','2012-05-01 00:00','zapraszamy na zawody','opis naszych zawodow',1,'Krakow - ....');