twojastara
3.02.2015, 14:45:58
Dlaczego korzystniej jest rozbić tabelę ze sporą ilością kolumn na kilka mniejszych tabel?
Mam przykładowy diagram, w którym tabela `zamowienia`połączona jest z tabelami `status` i `koszt_wysyłki`. Po co to jest rozbite na 3 tabele?
--------------------
ZAMÓWIENIE
--------------------
`Id_Zamowienia`
`Id_Klienta`
`Id_Wysylka``
`Id_Status`
`Id_Faktury`
`data`
--------------------
STATUS
--------------------
`Id_Status`
`Status`
--------------------
KOSZT_WYSYLKI
--------------------
`Id_Wysylka`
`Koszt`
`Waga`
Dlaczego nie wrzucić wszystkiego do jednej tabeli?
nospor
3.02.2015, 14:50:54
Poczytaj o tabelach słownikowych.
Czy w tym przypadku to było sensowne? A czort wie. Ja tam ze statusu nigdy nie robiłem tabeli słownikowej.
aniolekx
3.02.2015, 14:57:33
aby uniknąć redundancji,
poczytaj o relacyjnych bazach danych, pierwsze z brzegu z Googla:
http://edu.pjwstk.edu.pl/wyklady/rbd/scb/wyklad5/norm.htm
nospor
3.02.2015, 15:05:13
@aniolekx w przypadku statusu nie ma mowy o redundancji. Chyba ze jakis geniusz zmiast tinyint czy enum uzywa varchar

Zas zrobienie tabeli KOSZT_WYSYLKI to juz w ogole porażka. A jak dany koszt sie zmieni? Nie mozna bedzie wowczas w tej tabeli dac zmiany, bo poleci to po wszystkich starych zamowieniach. Trzeba robic nowy rekord. A nigdzie nie ma informacji, ze dany rekord jest rekordem archiwalnym
aniolekx
3.02.2015, 15:05:25
Cytat(nospor @ 3.02.2015, 15:03:09 )

@aniolekx w przypadku statusu nie ma mowy o redundancji. Chyba ze jakis geniusz zmiast tinyint czy enum uzywa varchar

no na bank użyłby varchar...
często zdarza się scenariusz (jak zamawiam z Next'a) ze jakiegoś produktu z zamówienia akurat nie ma i musi być dosłany później, dlatego powinna być relacja jeden do wielu pomiędzy zamówieniem a wysyłka
nospor
3.02.2015, 15:07:12
Cytat
no na bank użyłby varchar...
Nawet jesli, to tutaj stosowanie slownika jest bez sensu... to powinien byc enum lub tinyint a nie slownik. Stany zamowienia są raczej niezmienne i nie ma sensu projektowac pod nie słownika.
sniver
3.02.2015, 15:27:52
Metoda słownikowa przy statusach zamówień jest uzasadniona, jeśli zmiana statusu zamówienia wiąże się z jakimś tam dodatkowym dzialaniem - np. wysyłany jest e-mail o zmiennej treści którą wprowadza sobie sprzedawca takiego sklepu.
Jeśli więc poza bezduszną zmianą stanu - na zasadzie - zamówienie nowe, zamówienie w trakcie, zamówienie zrealizowane <- faktycznie nie ma sensu robić słownika czy jakiejś specjalnej tabeli. Jeśli jednak ma to nieść za sobą dodatkową funkcjonalność to inaczej sie nie da, zresztą takie podejście jest o wiele łatwiej skalowalne niż gdyby statusy były polem enum w tabeli "zamówienia".
Co do kosztów wysyłki - bez sensu - ja bym to scalił.
nospor
3.02.2015, 15:40:08
Cytat
Metoda słownikowa przy statusach zamówień jest uzasadniona, jeśli zmiana statusu zamówienia wiąże się z jakimś tam dodatkowym dzialaniem - np. wysyłany jest e-mail o zmiennej treści którą wprowadza sobie sprzedawca takiego sklepu.
Nie bardzo rozumiem: a co ma do tego slownik? Przy zmianie statusu mozna maila slac niezaleznie czy to jest slownik czy enum
sniver
3.02.2015, 15:44:10
Chodzi o to że sprzedawca może sobie zrobić własny model statusów i do kazdego dodać jakąś wiadomość czy jakieś tam inne rozwiązania - tak czy owak, statusy warto przerzucić jako słownik, reszte nie. To moja ocena ;]
nospor
3.02.2015, 15:49:55
Teraz rozumiem co miales na mysli
galos
16.02.2015, 10:00:13
No dobrze, ale podstawą tego wszystkiego i główną odpowiedzią na pytanie jest chyba właśnie to o czym wspomniał kolega wyżej, czyli normalizacja tabel.
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.