-
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
- 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>
- Czy istnieje jakiś emulator przeglądarek pod Mac'a?
- taka sama konfiguracja dla localhost i produkcji
Najnowsze wątki
- 2024-11-29 Dławik CM
- 2024-11-29 [OT] Lewe oprogramowanie
- 2024-11-29 Błonie => Sales Specialist <=
- 2024-11-29 Warszawa => IT Expert (Network Systems area) <=
- 2024-11-29 Warszawa => Ekspert IT (obszar systemów sieciowych) <=
- 2024-11-29 Warszawa => Head of International Freight Forwarding Department <=
- 2024-11-29 Białystok => Inżynier Serwisu Sprzętu Medycznego <=
- 2024-11-29 Pómpy ciepła darmo rozdajoo
- 2024-11-29 Białystok => Application Security Engineer <=
- 2024-11-29 Białystok => Programista Full Stack (.Net Core) <=
- 2024-11-29 Gdańsk => Software .Net Developer <=
- 2024-11-29 Wrocław => Key Account Manager <=
- 2024-11-29 Gdańsk => Specjalista ds. Sprzedaży <=
- 2024-11-29 Chrzanów => Specjalista ds. public relations <=
- 2024-11-27 Re: UseGalileo -- PRODUKTY I APLIKACJE UŻYWAJĄ JUŻ DZIŚ SYSTEMU GALILEO