Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Funkcja serialize i 1 postać normalna
Forum PHP.pl > Forum > PHP
Nyny
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?
mike
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.
em1X
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
Nyny
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?
nevt
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...
Nyny
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
mike
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.
em1X
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ę.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.