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:2011:projekty:restauracje:logiczny:index [2011/06/06 13:29]
ztb2011
pl:dydaktyka:ztb:2011:projekty:restauracje:logiczny:index [2019/06/27 15:50] (aktualna)
Linia 87: Linia 87:
 W tym punkcie należy sprawdzić czy nasza baza jest w trzeciej postaci normalnej (3NF). Pierwszym krokiem jest sprawdzenie drugiej postaci normalnej (2NF) a następnie czy wszystkie atrybuty niekluczowe są zależne tylko od parametrów kluczowych. W tym punkcie należy sprawdzić czy nasza baza jest w trzeciej postaci normalnej (3NF). Pierwszym krokiem jest sprawdzenie drugiej postaci normalnej (2NF) a następnie czy wszystkie atrybuty niekluczowe są zależne tylko od parametrów kluczowych.
  
-== Druga postać normalna ​===+== Sprawdzenie 2NF ===
  
 Specyfika pracy z Django sprawia, że uzyskane tabele składają się tylko z kluczy prostych, z tego powodu baza napewno jest w drugiej postaci normalnej. Specyfika pracy z Django sprawia, że uzyskane tabele składają się tylko z kluczy prostych, z tego powodu baza napewno jest w drugiej postaci normalnej.
  
  
-== Brak zależności pomiędzy atrybutami niekluczowymi ==+== Sprawdzenie ​zależności pomiędzy atrybutami niekluczowymi ==
  
 +  * **auth_user** - informacje o użytkowniku systemu
 +    * id - PRIMARY KEY,
 +    * username  ​
 +    * first_name ​
 +    * last_name ​
 +    * email 
 +    * password ​
 +    * is_staff ​
 +    * is_active
 +    * is_superuser ​
 +    * last_login ​
 +    * date_joined ​
 +    * groups ​
 +    * user_permisions
 +Wszystkie pola są zależne od klucza głównego i nie mogą bez tego istnieć.
 +
 +  * **accounts_contactdata** - dane adresowe
 +    * id PRIMARY KEY,
 +    * city 
 +    * street ​
 +    * flat_number ​
 +    * pna 
 +    * phone 
 +Wszystkie pola zależne od klucza głównego
 +
 +  * **accounts_userprofile** - informacje o profilu użytkownika
 +    * id PRIMARY KEY
 +    * user_id FOREIGN KEY
 +    * contact_data_id ​ FOREIGN KEY
 +    * activation_key - Prametr zależny od klucza głównego.
 +
 +  * **accounts_comment** - komentarze użytkowników
 +    * id - PRIMARY KEY,
 +    * user_comment ​
 +    * ratio 
 +    * user_id - FOREIGN KEY
 +    * restaurant_id - FOREIGN KEY
 +    * dish_id - FOREIGN KEY
 +Parametry niekluczowe (user_comment,​ ratio) zależne od klucza głównego.
 +
 +  * **accounts_basket** - koszyki zleceń
 +    * id - PRIMARY KEY,
 +    * user_id - FOREIGN KEY
 +    * session - zależny od aktywnego koszyka (klucza głównego)
 +
 +  * **restaurants_restaurant** - informacje o restauracji
 +    * id -  PRIMARY KEY,
 +    * user_id - FOREIGN KEY
 +    * is_promo ​
 +    * activation_key ​
 +    * contact_data_id - FOREIGN KEY
 +    * description_id - FOREIGN KEY
 +Atrybuty is_promo oraz activation_key są zależne od klucza głównego restauracji
 +
 +  * **restaurants_dish** - informacje o potrawach
 +    * id - PRIMARY KEY,
 +    * name 
 +    * description ​
 +    * price 
 +    * category_id - FOREIGN KEY
 +    * restaurant_id - FOREIGN KEY
 +Ponownie wszystkie atrybuty niekluczowe są zależne tylko od klucza głównego
 +
 +  * **restaurants_category** - kategorie potraw
 +    * id -  PRIMARY KEY,
 +    * name - zależne od klucza
 +
 +
 +  * **restaurants_description** - informacje o restauracjach
 +    * id - PRIMARY KEY,
 +    * name 
 +    * description
 +    * img 
 +Wszystkie atrybuty zależne od klucza
 +
 +  * **restaurants_orderingdish** - tabela z zamawianymi potrawami
 +    * id -  PRIMARY KEY,
 +    * count - liczebnośc zamówienia,​ zależna od zamówionej potrawy (klucza głównego)
 +    * dish_id - FOREIGN KEY
 +    * basket_id - FOREIGN KEY
 +    * order_id - FOREIGN KEY
 +
 +  * **restaurants_order** - tabela z zamówieniami
 +    * id -  PRIMARY KEY,
 +    * state 
 +    * order_date ​
 +    * contact_data_id - FOREIGN KEY
 +Oba atrybuty state oraz order_date są specyficzne dla zamówienia,​ dlatego są zależne od klucza.
 +
 +== Wynik ==
 +Na postawie tej analizy wynika, że są spełnione oba założenia zatem możemy stwierdzić,​ że nasza bazie __**jest w trzeciej postaci normalnej**__ (3NF).
 ====-. Operacje na danych==== ====-. Operacje na danych====
 +
 +==Pobranie listy restauracji==
 +<​code>​SELECT "​restaurants_restaurant"​."​id",​ "​restaurants_restaurant"​."​user_id",​ "​restaurants_restaurant"​."​is_promo",​ "​restaurants_restaurant"​."​activation_key",​ "​restaurants_restaurant"​."​contact_data_id",​ "​restaurants_restaurant"​."​description_id"​ FROM "​restaurants_restaurant"</​code>​
 +
 +==Rejestracja użytkownika==
 +  * User 
 +
 +<​code>​NSERT INTO "​auth_user"​ ("​username",​ "​first_name",​ "​last_name",​ "​email",​ "​password",​ "​is_staff",​ "​is_active",​ "​is_superuser",​ "​last_login",​ "​date_joined"​) VALUES (restauracja,​ , , restauracja@gmail.com,​ sha1$2cde6$02b068ba3bf0bdb0b40878d357c879bd4c716c47,​ False, True, False, 2011-06-16 02:​00:​20.516032,​ 2011-06-16 02:​00:​20.516032)</​code>​
 +  * ContactData ​
 +
 +
 +<​code>​INSERT INTO "​accounts_contactdata"​ ("​city",​ "​street",​ "​flat_number",​ "​pna",​ "​phone",​ "​lat",​ "​lng"​) VALUES (city, street, flat_number,​ zip, phone_number,​ None, None)</​code>​
 +  * UserProfile ​
 +
 +
 +<​code>​INSERT INTO "​accounts_userprofile"​ ("​user_id",​ "​contact_data_id",​ "​activation_key"​) VALUES (2, 1, a1d96ad94e96abc3247c41c888fbf7bc4c7a9770)</​code>​
 +
 +==Rejestracja restauracji==
 +  * User 
 +
 +<​code>​INSERT INTO "​auth_user"​ ("​username",​ "​first_name",​ "​last_name",​ "​email",​ "​password",​ "​is_staff",​ "​is_active",​ "​is_superuser",​ "​last_login",​ "​date_joined"​) VALUES (user, , , user@gmail.com,​ sha1$d3c29$db8cca0d71b4a26d5a2a5ee01db6f13a3161f090,​ False, True, False, 2011-06-16 01:​51:​41.714921,​ 2011-06-16 01:​51:​41.714921)</​code>​
 +  * ContactData ​
 +
 +
 +<​code>​INSERT INTO "​accounts_contactdata"​ ("​city",​ "​street",​ "​flat_number",​ "​pna",​ "​phone",​ "​lat",​ "​lng"​) VALUES (krakow, lea, 5, zip, tel, 50.0694749, 19.9237717)</​code>​
 +  * Description
 +
 +<​code>​INSERT INTO "​restaurants_description"​ ("​name",​ "​description",​ "​img"​) VALUES (Nazwa, Opis, )</​code>​
 +
 +  * Restaurant ​
 +
 +
 +<​code>​INSERT INTO "​restaurants_restaurant"​ ("​user_id",​ "​is_promo",​ "​activation_key",​ "​contact_data_id",​ "​description_id"​) VALUES (4, False, 1e7628f58f2ef403653e42fbd9ed2a4891fa5907,​ 2, 2)</​code>​
 +  * Category
 +
 +<​code>​INSERT INTO "​restaurants_category"​ ("​name",​ "​restaurant_id"​) VALUES (Dania z kurczaka, 1)</​code>​
 +
 +
 +<​code>​INSERT INTO "​restaurants_category"​ ("​name",​ "​restaurant_id"​) VALUES (Dania z wieprzowiny,​ 1)</​code>​
 +
 +
 +<​code>​INSERT INTO "​restaurants_category"​ ("​name",​ "​restaurant_id"​) VALUES (Napoje, 1)</​code>​
 +
 +==Logowanie==
 +<​code>​SELECT "​auth_user"​."​id",​ "​auth_user"​."​username",​ "​auth_user"​."​first_name",​ "​auth_user"​."​last_name",​ "​auth_user"​."​email",​ "​auth_user"​."​password",​ "​auth_user"​."​is_staff",​ "​auth_user"​."​is_active",​ "​auth_user"​."​is_superuser",​ "​auth_user"​."​last_login",​ "​auth_user"​."​date_joined"​ FROM "​auth_user"​ WHERE "​auth_user"​."​username"​ = restauracja</​code>​
 +
 +
 +<​code>​SELECT "​django_session"​."​session_key",​ "​django_session"​."​session_data",​ "​django_session"​."​expire_date"​ FROM "​django_session"​ WHERE ("​django_session"​."​session_key"​ = 897afbf7b884bf9afd90aaaa214f321f AND "​django_session"​."​expire_date"​ > 2011-06-16 02:​06:​12.307045 )</​code>​
 +
 +
 +<​code>​SELECT "​django_session"​."​session_key",​ "​django_session"​."​session_data",​ "​django_session"​."​expire_date"​ FROM "​django_session"​ WHERE "​django_session"​."​session_key"​ = 35d4742a49267bfae806fd8f55b210bf</​code>​
 +
 +
 +<​code>​INSERT INTO "​django_session"​ ("​session_key",​ "​session_data",​ "​expire_date"​) VALUES (35d4742a49267bfae806fd8f55b210bf,​ ZjEwOTM1YzhhMjFhNzVmNWY3ZjlmNzViNTIyNGRlY2JmNzk0ZmE0YTqAAn1xAS4= , 2011-06-30 02:​06:​12.341886)</​code>​
 +
 +==Dodawanie potrawy do menu restauracji==
 +
 +<​code>​SELECT "​restaurants_restaurant"​."​id",​ "​restaurants_restaurant"​."​user_id",​ "​restaurants_restaurant"​."​is_promo",​ "​restaurants_restaurant"​."​activation_key",​ "​restaurants_restaurant"​."​contact_data_id",​ "​restaurants_restaurant"​."​description_id"​ FROM "​restaurants_restaurant"​ WHERE "​restaurants_restaurant"​."​user_id"​ = 4</​code>​
 +
 +
 +<​code>​SELECT "​restaurants_category"​."​id",​ "​restaurants_category"​."​name",​ "​restaurants_category"​."​restaurant_id"​ FROM "​restaurants_category"​ WHERE "​restaurants_category"​."​name"​ = Dania z kurczaka</​code>​
 +
 +
 +<​code>​INSERT INTO "​restaurants_dish"​ ("​name",​ "​description",​ "​price",​ "​category_id",​ "​restaurant_id"​) VALUES (Kurczak na ostro, kurczak w ostrym sosie, ryż, surówka, 22, 1, 1)</​code>​
 +
 +==Pobieranie menu restauracji==
 +
 +<​code>​SELECT "​restaurants_dish"​."​id",​ "​restaurants_dish"​."​name",​ "​restaurants_dish"​."​description",​ "​restaurants_dish"​."​price",​ "​restaurants_dish"​."​category_id",​ "​restaurants_dish"​."​restaurant_id"​ FROM "​restaurants_dish"​ WHERE "​restaurants_dish"​."​restaurant_id"​ = 1</​code>​
 +
 +==Pobieranie komentarzy o restauracji==
 +
 +<​code>​SELECT "​accounts_comment"​."​id",​ "​accounts_comment"​."​user_comment",​ "​accounts_comment"​."​ratio",​ "​accounts_comment"​."​user_id",​ "​accounts_comment"​."​restaurant_id",​ "​accounts_comment"​."​dish_id"​ FROM "​accounts_comment"​ WHERE "​accounts_comment"​."​restaurant_id"​ = 1</​code>​
 +
 +==Pobieranie komentarzy o potrawie==
 +
 +<​code>​SELECT "​accounts_comment"​."​id",​ "​accounts_comment"​."​user_comment",​ "​accounts_comment"​."​ratio",​ "​accounts_comment"​."​user_id",​ "​accounts_comment"​."​restaurant_id",​ "​accounts_comment"​."​dish_id"​ FROM "​accounts_comment"​ WHERE "​accounts_comment"​."​dish_id"​ = 1</​code>​
 +
 +==Pobieranie koszyka niezalogowanego użytkownika==
 +
 +<​code>​SELECT "​accounts_basket"​."​id",​ "​accounts_basket"​."​user_id",​ "​accounts_basket"​."​session"​ FROM "​accounts_basket"​ WHERE "​accounts_basket"​."​session"​ = b015e7e807f1d0474a870df8cafe570b</​code>​
 +
 +==Dodawanie potrawy do koszyka oraz do zamówień restauracji==
 +
 +<​code>​SELECT "​accounts_basket"​."​id",​ "​accounts_basket"​."​user_id",​ "​accounts_basket"​."​session"​ FROM "​accounts_basket"​ WHERE "​accounts_basket"​."​session"​ = e8974ec8edc1b95284a6bc351f949f3b</​code>​
 +
 +
 +<​code>​INSERT INTO "​accounts_basket"​ ("​user_id",​ "​session"​) VALUES (None, e8974ec8edc1b95284a6bc351f949f3b)</​code>​
 +
 +
 +<​code>​INSERT INTO "​restaurants_orderingdish"​ ("​count",​ "​dish_id",​ "​basket_id",​ "​order_id"​) VALUES (1, 3, 1, None)</​code>​
 +
 +
 +==Zamawianie potrawy==
 +
 +<​code>​SELECT "​accounts_basket"​."​id",​ "​accounts_basket"​."​user_id",​ "​accounts_basket"​."​session"​ FROM "​accounts_basket"​ WHERE "​accounts_basket"​."​session"​ = e8974ec8edc1b95284a6bc351f949f3b</​code>​
 +
 +
 +<​code>​INSERT INTO "​accounts_contactdata"​ ("​city",​ "​street",​ "​flat_number",​ "​pna",​ "​phone",​ "​lat",​ "​lng"​) VALUES (Krakow, Lea, 100/5, 32-300, 600600600, None, None)</​code>​
 +
 +
 +<​code>​INSERT INTO "​restaurants_order"​ ("​state",​ "​order_date",​ "​contact_data_id",​ "​restaurant_id"​) VALUES (0, 2011-06-16, 3, 1)</​code>​
 +
 +
 +<​code>​SELECT "​restaurants_orderingdish"​."​id",​ "​restaurants_orderingdish"​."​count",​ "​restaurants_orderingdish"​."​dish_id",​ "​restaurants_orderingdish"​."​basket_id",​ "​restaurants_orderingdish"​."​order_id"​ FROM "​restaurants_orderingdish"​ WHERE "​restaurants_orderingdish"​."​basket_id"​ = 1</​code>​
 +
 +
 +<​code>​UPDATE "​restaurants_orderingdish"​ SET "​count"​ = 1, "​dish_id"​ = 3, "​basket_id"​ = NULL, "​order_id"​ = 1 WHERE "​restaurants_orderingdish"​."​id"​ = 1</​code>​
 +
 +==Dodawania komentarza o restauracji i potrawie==
 +
 +<​code>​INSERT INTO "​accounts_comment"​ ("​user_comment",​ "​ratio",​ "​user_id",​ "​restaurant_id",​ "​dish_id"​) VALUES (Dobry, 5, None, None, 3)</​code>​
 +
 +
 +<​code>​INSERT INTO "​accounts_comment"​ ("​user_comment",​ "​ratio",​ "​user_id",​ "​restaurant_id",​ "​dish_id"​) VALUES (Super, 6, None, 1, None)</​code>​
 +
 +==Przyjęcie zamówienia do realizacji==
 +
 +<​code>​SELECT "​restaurants_restaurant"​."​id",​ "​restaurants_restaurant"​."​user_id",​ "​restaurants_restaurant"​."​is_promo",​ "​restaurants_restaurant"​."​activation_key",​ "​restaurants_restaurant"​."​contact_data_id",​ "​restaurants_restaurant"​."​description_id"​ FROM "​restaurants_restaurant"​ WHERE "​restaurants_restaurant"​."​user_id"​ = 4</​code>​
 +
 +
 +<​code>​SELECT "​restaurants_order"​."​id",​ "​restaurants_order"​."​state",​ "​restaurants_order"​."​order_date",​ "​restaurants_order"​."​contact_data_id",​ "​restaurants_order"​."​restaurant_id"​ FROM "​restaurants_order"​ WHERE "​restaurants_order"​."​id"​ = 1</​code>​
 +
 +
 +<code sql>​UPDATE "​restaurants_order"​ SET "​state"​ = 1, "​order_date"​ = 2011-06-16, "​contact_data_id"​ = 3, "​restaurant_id"​ = 1 WHERE "​restaurants_order"​."​id"​ = 1</​code>​
pl/dydaktyka/ztb/2011/projekty/restauracje/logiczny/index.1307359761.txt.gz · ostatnio zmienione: 2019/06/27 15:57 (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