sql >> Databáze >  >> RDS >> Mysql

Jeden stůl vs více stolů

Mohou existovat skutečné důvody, proč chtít/potřebovat jedinou tabulku komentářů. Například by to zjednodušilo zobrazení všech komentářů od daného uživatele. Také prohledávání všech komentářů by bylo jednodušší (dejte jeden FTS index na jednu tabulku a máte hotovo).

Na druhou stranu, pokud neexistuje pádný důvod pro ponechání komentářů v jediné tabulce, existuje možné třetí (a poměrně zřejmé) řešení.

Vytvořte samostatnou tabulku komentářů pro každou položku (příspěvek, událost, soubor, dokument). V takové situaci by bylo velmi jednoduché definovat a popsat vztahy RI. Také, pokud zadáváte ad-hoc dotazy velmi často, mohlo by to být jednodušší. Například

 select * from documents d left join doc_comments c 
                           on d.id = c.docid 
                           where d.id=42;

Nic z toho nemusí být relevantní nebo důležité pro vaši situaci, ale mohlo by to stát za zvážení.

Jedna další náhodná myšlenka:Obě řešení v OP mají „pocit“, že definují vztah many-to-many (např. komentář může patřit k více položkám). Za předpokladu, že se nejedná o požadovanou situaci, lze jí předejít pomocí vhodného jedinečného indexu, ... ale přesto ... má počáteční vzhled, který se zdá, jako by to mohlo vést k možnému zmatku.



  1. MySQL:PŘIPOJTE dvě tabulky na LIKE

  2. Jak uložit Java Date do Mysql datetime pomocí JPA

  3. SQL dotaz pro nalezení záznamu s ID, který není v jiné tabulce

  4. Uzamkněte tabulku mysql pomocí php