Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Funkcja serialize i 1 postać normalna
Nyny
post 4.02.2008, 22:30:05
Post #1





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 29.01.2007
Skąd: Nowy Sącz

Ostrzeżenie: (0%)
-----


Witam,
pisze prace dyplomowa w której mam stworzony mini sklep internetowy i koszyk zakupów. Tak sie składa ze zawartosc koszyka (powiedzmy kilka dodanych pozycji) zapisywany jest do bazy danych w postaci ciagu znaków varchar zakodowanych funkcja serialize.
Moj promotor mowi ze takie cos jest niezgodne z 1 postacia normalna gdyz umieszczam w 1 polu kilka wartosci. A przeciez funkcja serialize zapisuje wartosc tablicy jako pojedynczy ciag znakow?
Niech mi ktos pomoze najlepiej podajac jakies zrodla czy ta funkcja jezyka PHP nie lamie 1NF?
Go to the top of the page
+Quote Post
mike
post 4.02.2008, 22:39:09
Post #2





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

Ostrzeżenie: (0%)
-----


Cytat(Nyny @ 4.02.2008, 22:30:05 ) *
Moj promotor mowi ze takie cos jest niezgodne z 1 postacia normalna gdyz umieszczam w 1 polu kilka wartosci. A przeciez funkcja serialize zapisuje wartosc tablicy jako pojedynczy ciag znakow?
Niech mi ktos pomoze najlepiej podajac jakies zrodla czy ta funkcja jezyka PHP nie lamie 1NF?
A po co Ci źródła? Wystarczy zadać sobie odpowiednie pytanie żeby zrozumieć, że nie masz racji.
Odpowiedz sobie na pytanie jakie i ile elementów jest w koszyku? I na ilu polach są one zapisane wszystkie.
I już widać ze kilka elementów ładujesz do tablicy a ją do jednego pola.

Albo inne pytanie. Wybierz klientów, którzy mają w koszyku przedmiot o identyfikatorze x. Powodzenia.
Go to the top of the page
+Quote Post
em1X
post 4.02.2008, 23:31:52
Post #3





Grupa: Zarejestrowani
Postów: 984
Pomógł: 41
Dołączył: 16.03.2002
Skąd: Płock

Ostrzeżenie: (0%)
-----


mike ma racje, promotor również, a Ty się nie przykładałeś do nauki o postaciach normalnych!

koszyk ma wyglądać co najmniej tak:

- id_uzytkownika primary key, not null
- id_towaru primary key, not null
- ilosc not null, default 1

proste i skuteczne party.gif

Ten post edytował em1X 4.02.2008, 23:34:08


--------------------
eh, co polska wódka to polska wódka
Go to the top of the page
+Quote Post
Nyny
post 5.02.2008, 07:13:23
Post #4





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 29.01.2007
Skąd: Nowy Sącz

Ostrzeżenie: (0%)
-----


Eh no to niedobrze. Ale nadal nie daje mi spokoju czemu 1 łancuch znaków a:3:{i:13;s:1:"5";i:14;s:1:"5";i:1;s:1:"5";} łamie 1NF?
Go to the top of the page
+Quote Post
nevt
post 5.02.2008, 07:49:11
Post #5





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

Ostrzeżenie: (0%)
-----


Dlatego, że ten JEDEN FIZYCZNY łańcuch, (czyli jedno pole w bazie) przechowuje WIELE LOGICZNYCH danych.

Dla tak "zaszytych" danych nie można tworzyć relacji...
Dla tak "zaszytych" danych nie można tworzyć sensownych inedksów...
Dla tak "zaszytych" danych nie można w prosty sposób wyszukać konkretnych wartości...
Dla tak "zaszytych" danych nie można wprowadzić prostych formuł walidacji...
Dla tak "zaszytych" danych nie można ...


Podumowując - takie "spakowanie" danych w jednym polu uniemożliwia normalny dostep do nich poprzez wbudowane mechanizmy serwera bazy danych - czy NIE MA SENSU. Przemyśl to - może jeszcze jest czas na zmianę tamatu pracy...


--------------------

-
Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... -
Go to the top of the page
+Quote Post
Nyny
post 5.02.2008, 08:34:55
Post #6





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 29.01.2007
Skąd: Nowy Sącz

Ostrzeżenie: (0%)
-----


Praca jest juz prawie napisana tylko promotor wlsnie doczepil sie tej funkcji. No nic w takim razie stworze osobna tabele gdzie bedzie numer zamowienia i zawartosc koszyka w osobnych wierszach. Tak juz bedzie chyba OK? Tak jak napisal em1X
Go to the top of the page
+Quote Post
mike
post 5.02.2008, 09:04:00
Post #7





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

Ostrzeżenie: (0%)
-----


Cytat(Nyny @ 5.02.2008, 08:34:55 ) *
Praca jest juz prawie napisana tylko promotor wlsnie doczepil sie tej funkcji. No nic w takim razie stworze osobna tabele gdzie bedzie numer zamowienia i zawartosc koszyka w osobnych wierszach. Tak juz bedzie chyba OK? Tak jak napisal em1X
Tak.
Go to the top of the page
+Quote Post
em1X
post 5.02.2008, 10:57:43
Post #8





Grupa: Zarejestrowani
Postów: 984
Pomógł: 41
Dołączył: 16.03.2002
Skąd: Płock

Ostrzeżenie: (0%)
-----


Cytat(Nyny @ 5.02.2008, 07:13:23 ) *
Eh no to niedobrze. Ale nadal nie daje mi spokoju czemu 1 łancuch znaków a:3:{i:13;s:1:"5";i:14;s:1:"5";i:1;s:1:"5";} łamie 1NF?


Cytat("Wikipedia")
1NP: 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ę.


Ten post edytował em1X 5.02.2008, 10:59:09


--------------------
eh, co polska wódka to polska wódka
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 13:57