Autor Zpráva
dunky
Profil
Dobrý den,
přemýšlím, jak takovou věc udělat a zároveň si do budoucna nezazdít možnost fulltextového vyhledávání. Taky je potřeba vzít v úvahu, že výsledné dotazy by se mohly stát neúnosně dlouhé.

Zaujali mě varianty, které prezentuje Jakub Vrána, přesto mi ani jedna zcela nevyhovuje. Napadla mě ještě varianta taková, že bych udělal pro každý jazyk jinou tabulku s identickými sloupci např. article_cs, article_en, ... . Odpadl by tím problém s různými kódováními a každá tabulka by měla vlastní fulltext index. Ale přijde mi hloupé mít několik tabulek, které se liší jen názvem.

Uznávám, že následující řešení, které jsem vytvořil bez ohledu na fulltext a kódování různých jazyků, je poněkud hloupé.

--aritcle
CREATE TABLE `article`
{
`id` int unsigned PRIMARY KEY AUTO INCREMENT,
`user_id` int unsigned comment 'reference to author, user->id',
    CONSTRAINT `article_user_fk` FOREIGN KEY (`user_id`) 
    REFERENCES `user` (`id`),
`category_id` int unsigned comment  'reference to category->id',
    CONSTRAINT `article_articlecategory_fk` FOREIGN KEY (`category_id`) 
    REFERENCES `articlecategory` (`id`)
`created` timestamp DEFAULT CURRENT_TIMESTAMP,

`hits` int unsigned
}
CREATE TABLE `articlecontent`
{
`id` int unsigned PRIMARY KEY AUTO INCREMENT,
`article_id` int unsigned,

`created` timestamp DEFAULT CURRENT_TIMESTAMP,

`headline` varchar(255),
`introtext` mediumtext,
`fulltext` mediumtext,

`language_code` int unsigned comment  'reference to language->code',
    CONSTRAINT `articlecontent_language_fk` FOREIGN KEY (`language_code`) 
    REFERENCES `language` (`code`)
`is_backup` tinyint(1)
}
CREATE TABLE `articlecontent_backup`
{
`articlecontent_id` int unsigned,
`backup_articlecontent_id` int unsigned,
`original_articlecontent_id` int unsigned
}
CREATE TABLE `articlecategory`
{
`id` int unsigned PRIMARY KEY AUTO INCREMENT,
`title` varchar(200),
}
--language
CREATE TABLE `language`
{
`code` varchar(6) PRIMARY KEY,
`title` varchar(50),
`priority` int unsigned
}
Kajman
Profil
Jaké problémy s kódováním a indexy máte na mysli v Jakubově řešení s více překlady přímo v tabulce?
dunky
Profil
Ano přesně o tom mluvím, mysql samozřejmě nedovoluje nastavit jiné kódování pro každy záznam, tudíž moje databázové schéma by mohlo mít problémý s nějakými exotickými jazyky.
peta
Profil
Unicode je ale univerzalni pro vsechny jazyky.
Pomoci COLLATE si muzes nastavit, jake kodovani pouzijes pri ukladani zaznamu.
Ostatne koukam, ze je to oboji v tom jakubove reseni...
dunky
Profil
Spíš jsem přemýšlel jaké řešení by bylo nejlepší pro efektivní fulltext.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: