Both sides previous revision
Poprzednia wersja
Nowa wersja
|
Poprzednia wersja
|
pl:dydaktyka:ztb:2011:projekty:restauracje:logiczny:index [2011/06/06 13:50] ztb2011 |
pl:dydaktyka:ztb:2011:projekty:restauracje:logiczny:index [2019/06/27 15:50] (aktualna) |
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 | * **auth_user** - informacje o użytkowniku systemu |
* phone | * phone |
Wszystkie pola zależne od klucza głównego | Wszystkie pola zależne od klucza głównego |
| |
* **accounts_userprofile** - informacje o profilu użytkownika | * **accounts_userprofile** - informacje o profilu użytkownika |
* id PRIMARY KEY | * id PRIMARY KEY |
* dish_id - FOREIGN KEY | * dish_id - FOREIGN KEY |
Parametry niekluczowe (user_comment, ratio) zależne od klucza głównego. | Parametry niekluczowe (user_comment, ratio) zależne od klucza głównego. |
| |
* **accounts_basket** - koszyki zleceń | * **accounts_basket** - koszyki zleceń |
* id - PRIMARY KEY, | * id - PRIMARY KEY, |
* user_id - FOREIGN KEY | * user_id - FOREIGN KEY |
* id - PRIMARY KEY, | * id - PRIMARY KEY, |
* name - zależne od klucza | * name - zależne od klucza |
| |
| |
* **restaurants_description** - informacje o restauracjach | * **restaurants_description** - informacje o restauracjach |
* order_id - FOREIGN KEY | * order_id - FOREIGN KEY |
| |
* restaurants_order - tabela z zamówieniami | * **restaurants_order** - tabela z zamówieniami |
* id - PRIMARY KEY, | * id - PRIMARY KEY, |
* state | * state |
Oba atrybuty state oraz order_date są specyficzne dla zamówienia, dlatego są zależne od klucza. | 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==== |
| |
Na postawie tej analizy możemy stwierdzić, że nasza bazie __jest w trzeciej postaci normalnej__ (3NF) i __spełnia__ założenia projektowe | ==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> |
| |
====-. Operacje na danych==== | ==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> |