![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 71 Pomógł: 1 Dołączył: 3.11.2005 Ostrzeżenie: (0%) ![]() ![]() |
Jak najlepiej zrobić w CI w pełni funkcjonalny słownik,
co lepsze (z punktu widzenia wydajności, obciążenia systemu, szybkości działania, obszerności kodu): 1) skonstruować go zgodnie z zasadami dobrego projektowania baz danych, np: jezyki (id,nazwa) slowa (id,slowo) slowa_kategorie(id,slowo_id, kategoria_id) slowa_jezyki(id,slowo_id,jezyk_id) slowa_pary(id,slowo1,slowo2) (np. cat=kot) 2) czy też, lepiej pójść na łatwiznę i zrobć tak: slowa(id,slowo, jezyk,kategoria) --- W pierwszym przypadku, aby wszystko działało trzeba 1) albo tworzyć jedno, niesłychanie długie zapytanie SQL, albo podzielić je na mniejsze, np. ok 5 w przypadku dodawania nowego slowa ![]() W drugim przypadku, wszystko jest prostsze do zrozumienia i ogarnięcia, ale tabela ze słowami puchnie i puchnie... Które rozwiązanie jest lepsze, szybsze i bardziej "godne" zawodowego programisty? ![]() ![]() ps. pytanie umieściłem w dziale frameworki, ponieważ projekt będzie wykorzystywał active records z CI |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Nieautoryzowani Postów: 2 249 Pomógł: 305 Dołączył: 2.10.2006 Ostrzeżenie: (0%) ![]() ![]() |
Pierwsze, ale z tego co mi się wydaje to skopałeś projekt bazy - z resztą, nie znamy funkcjonalności dokładnej.
-------------------- Google knows the answer...
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 71 Pomógł: 1 Dołączył: 3.11.2005 Ostrzeżenie: (0%) ![]() ![]() |
Już wyjaśniam:
mamy 4 języki (ang, pol, hiszpański, rosyjski) Użytkownik loguje się i mając do wyboru dwie listy rozwijane (język1, język2), tworzy sobie kategorie, np. języki POL-ANG, kategoria: zwierzęta - tam dodaje sobie słówka (kot-cat, dom-house, itp.), albo ESP-RUS, kategoria ssaki - i przykładowe słówka (gato-kot, cholera wie, jak to jest po rusku)... Założenie jest takie, że wszystkie słowa są w jednej tabeli WORDS z parametrem UNIQUE, czyli unikamy powtórzeń. Wszystkie relacje słowo-słowo (czyli, np. pies-dog) są w tabeli word_pairs I tutaj zaczyna się droga przez mękę: jeśli słowo istnieje na liście, bo było użyte w kategorii np. zwierzęta, to nie dodajemy go ponownie, ale dodajemy wpis w tabeli word_pairs.... I tak samo z językami, kategoriami, itp. Podobne przeboje są z kasowaniem. Teoretycznie wszystko jest proste i ładne, ale... przykładowe problemy: 1) słowo identyczne z definicją (np. hit-hit) - DISTINCT zwykle rozwiązuje sprawę 2) nieistniejące pary, czyli np. dom(POL)-house(ANG) i zaraz house(POL!!!)-dom(ANG) 3) to samo, co wyżej, tylko w różnych kategoriach, np. dom(POL)-house(ANG) w kategorii BUDYNKI i house(POL!!!!)-dom(ANG) w KATEGORII NR 2 - efekt? hehe, w zależności od zapytania, np.: dom-house house-dom w kategorii BUDYNKI Czy nie prościej po prostu dać każdemu użytkownikowi osobną tabelkę, np.USR_TBL_21, o następujących polach: id, słowo, definicja, język, kategoria? ![]() Każdy user miałby swój 'zeszycik', gdzie mógłby się dowolnie wyszaleć ze słowami - a jakiekolwiek większe błędy nie miałyby wpływu na funkcjonowanie całości? |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 18:13 |