-
Data: 2010-03-19 09:41:27
Temat: Re: CMSy - jak przechowywać treść?
Od: "Marek" <m...@s...interia.pl> szukaj wiadomości tego autora
[ pokaż wszystkie 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-08 Belka
- 2024-11-09 pierdolec na punkcie psa
- 2024-11-09 Warszawa => Sales Executive <=
- 2024-11-09 Wrocław => SAP BTP Consultant (mid/senior) <=
- 2024-11-09 Warszawa => ECM Specialist / Consultant <=
- 2024-11-09 Warszawa => Senior Frontend Developer (React + React Native) <=
- 2024-11-10 TVN donosi: Obywatelskie zatrzymanie policjanta (nie na służbie)
- 2024-11-08 Warszawa => Head of International Freight Forwarding Department <=
- 2024-11-08 Warszawa => Key Account Manager <=
- 2024-11-08 Szczecin => Key Account Manager (ERP) <=
- 2024-11-08 Białystok => Full Stack web developer (obszar .Net Core, Angular6+) <
- 2024-11-08 Wrocław => Senior PHP Symfony Developer <=
- 2024-11-08 Warszawa => QA Engineer <=
- 2024-11-08 Warszawa => QA Inżynier <=
- 2024-11-08 Warszawa => Key Account Manager <=