-
Path: news-archive.icm.edu.pl!news.net.icm.edu.pl!not-for-mail
From: "Marek" <m...@s...interia.pl>
Newsgroups: pl.comp.www
Subject: Re: CMSy - jak przechowywać treść?
Date: Fri, 19 Mar 2010 10:41:27 +0100
Organization: Dzial Sieciowy ICM, Uniwersytet Warszawski
Lines: 48
Message-ID: <hnvgth$mtd$1@news.net.icm.edu.pl>
References: <hno29d$d4o$1@newsfeed.net.icm.edu.pl> <t...@k...net>
<hnt0th$iv$1@newsfeed.net.icm.edu.pl> <j...@k...net>
NNTP-Posting-Host: chello089078075046.chello.pl
Mime-Version: 1.0
Content-Type: text/plain; format=flowed; charset="iso-8859-2"; reply-type=original
Content-Transfer-Encoding: 8bit
X-Trace: news.net.icm.edu.pl 1268991729 23469 89.78.75.46 (19 Mar 2010 09:42:09 GMT)
X-Complaints-To: u...@n...net.icm.edu.pl
NNTP-Posting-Date: Fri, 19 Mar 2010 09:42:09 +0000 (UTC)
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2900.5843
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.5579
Xref: news-archive.icm.edu.pl pl.comp.www:395343
[ ukryj nagłówki ]> No i? A kto Ci broni mieć różne obiekty w różnych językach?
Skoro brniesz w ten temat, to jako niezależny wątek też mnie on interesuje.
Więc trudno: dam się tu wciągnąć. :-)
Jeśli o moje podejście do wersji językowych, to preferuję przechowywanie
wersji językowych treści w obrębie jednej tabeli. Jeśli np. mamy sobie
tabelę "dokument" a w niej "tytuł" i "treść" to dodatkowo załączam ID wersji
językowej. Tak więc jeden rekord to dokument w języku X, a drugi rekord to
dokument w wersji Y. Łatwo w takim przypadku tworzyć wyszukiwarki dla
konkretnej wersji językowej bez konieczności JOIN'owania wielu innych tabel.
Wydaje mi się to optymalnym podejściem. Dzięki temu łatwo jest też
jednoznacznie definiować również wersje funkcjonalne (tzw. skórki serwisu).
Jeden tylko parametr (ID wersji językowej) określa z jaką skórką należy
wyświetlić dany dokument. Gdybym łączył np. 10 tabel aby każde z pól zassać
w odpowiedniej wersji to powstałoby z tego SQLowe monstrum.Trzeba też uważać
aby każdy z JOINów odwoływał się do tego samego ID. A co z tabelami, które
mają 100 pól tekstowych? 100 Joinów ?
Tyle tytułem moich przemyśleń. Chętnie wysłucham jak na przykładzie prostej
tableli z 2 polami tekstowymi w jaki sposób realizujesz takie zagadnienie:
Mamy 2 dokumenty (u mnie byłyby to 2 rekordy w tej samej tabeli o nazwie
"dokument"), każdy z nich występuje tylko w 1 wersji językowej i każdy z
nich w innej. Nie ma czegoś takiego, że dany dokument ma odpowiednik w
innych wersjach. Jakie rozwiązanie zastosowałbyś aby wylistować wszystkie
dostępne treści dokumentów w określonej wersji językowej?
> Tak niskopoziomowo to np. założyć na bazę danych trigger, który działa ON
> INSERT i UPDATE. Trigger ten aktualizuje rekord wyciągając dane, które
> wstawiłeś do tresc, przetwarza (usunięcie tagów to prosty regexp - funkcje
> wbudowane w każdą sensowną bazę danych) i zapisuje w dodatkowej kolumnie
> (czy
> nawet w ogóle w innej tabeli czy bazie) tresc_gola. Wyszukujesz po
> tresc_gola,
> wyświetlasz tresc.
A no właśnie: czyli dodatkowe pole. Wspominałeś coś o indeksach i mylnie
założyłem, że na nich coś można zdziałać bez pola "goła treść". Rozumiem, że
po w/w polu uruchamiasz full text search?
A tak na marginesie - to parser treści realizowałbym na poziomie aplikacji a
nie bazy. Tagi mogą być przeróżne. Np. stosuję w swoim CMS'ie obiekty
osadzane w treści. Może to być np. obiekt, który wyświetla imie usera, albo
dużo bardziej złożony: np. menu. Mają one specjalną składnię - nie
występującą w HTML itp. Owszem, i to da się zaimplementować w bazie lecz
wtedy trzeba dość złożone operacje wykonywać w triggerach. Jeden średnik w
złym miejscu może sporo pracy przysporzyć.
Następne wpisy z tego wątku
- 19.03.10 18:00 Konrad Kosmowski
- 20.03.10 14:36 Marek
- 20.03.10 17:10 Borys Pogoreło
- 21.03.10 04:27 Konrad Kosmowski
- 21.03.10 22:57 Marek
- 21.03.10 23:16 Konrad Kosmowski
- 22.03.10 13:26 Marek
- 22.03.10 19:18 Konrad Kosmowski
- 22.03.10 20:05 Marek
- 23.03.10 20:49 Artur Muszyński
- 24.03.10 20:15 Marek
- 27.03.10 17:24 Artur Muszyński
- 27.03.10 17:27 Artur Muszyński
- 28.03.10 14:42 Marek
Najnowsze wątki z tej grupy
- Perfidne ataki krakerów z KRLD na skrypciarzy JS i Pajton
- Do sądu trafił pozew zbiorowy przeciw Google'owi - oskarżenie o praktyki monopolistyczne na rynku reklamy internetowej
- Jakie znacie działające serwery grup dyskusyjnych?
- is it live this group at news.icm.edu.pl
- php, linki z nazwami a $_GET, SEO
- www polityka pl captcha
- dyktatura brudnego palucha
- www.znanylekarz.pl
- Czy pytanie o sczytywanie stron programami/skryptami to tu?
- Grupy webdevowe
- Jak wydrukować stronę?
- IIS, kilka witryn
- linki <a href="/strona.php"> (ze slashami)
- co rozszerza stronę??
- responsywny akapit <p>
Najnowsze wątki
- 2025-08-06 Gdynia => Konsultant wdrożeniowy (systemy controlingowe) <=
- 2025-08-06 Białystok => Inżynier oprogramowania .Net <=
- 2025-08-06 "[...] sejmowe wystąpienie posłanki Klaudii Jachiry, która zakończyła je słowami ,,Sława Ukrainie"."
- 2025-08-05 "Chiny przekraczają w wydobyciu 4 mld ton węgla, Indie i USA ponad 1 mld, a Rosja 500 mln ton [...]"
- 2025-08-05 Panuje się 181 159,42 zł./mies. na posła w 2026r.
- 2025-08-05 "Chiny przekraczają w wydobyciu 4 mld ton węgla, Indie i USA ponad 1 mld, a Rosja 500 mln ton [...]"
- 2025-08-05 Czy cos fi przechodzi przez trafo separujące?
- 2025-08-05 kajaki i promile
- 2025-08-05 Re: Tesla jest bezpieczna, wczoraj spaliła się doszczętnie na Ursynowie i nikomu się nic nie stało
- 2025-08-05 Gdynia => Przedstawiciel handlowy / KAM (branża TSL) <=
- 2025-08-05 Re: Atak na lekarza w Oławie. Policja zatrzymała sprawcę na lotnisku Polska Agencja Prasowa 4 sierpnia 2025, 12:16 FACEBOOK X E-MAIL KOPIUJ LINK W szpitalu w Oławie 37-letni pacjent zaatakował lekarza, po tym, jak ten odmówił mu wypisania długoterminowego
- 2025-08-05 B2B i książka przychodów i rozchodów
- 2025-08-04 Re: Atak na lekarza w Oławie. Policja zatrzymała sprawcę na lotnisku Polska Agencja Prasowa 4 sierpnia 2025, 12:16 FACEBOOK X E-MAIL KOPIUJ LINK W szpitalu w Oławie 37-letni pacjent zaatakował lekarza, po tym, jak ten odmówił mu wypisania długoterminowego
- 2025-08-04 Na grupie comp.os.linux.advocacy CrudeSausage twierdzi, że Micro$lop używa SI do szyfrowania formatu dok. XML
- 2025-08-04 Na grupie comp.os.linux.advocacy CrudeSausage twierdzi, że Micro$lop używa SI do szyfrowania formatu dok. XML