sql >> Databáze >  >> RDS >> Database

WordPress – Zákulisí, část 2

V 1. části této série jsem ukázal, jak místně nainstalovat WordPress a jak importovat databázi WordPress do Vertabelo. V tomto článku se blíže podíváme na tabulky v databázi WordPress.

Rychlý pohled na model databáze WordPress a řídicí panel

V předchozím díle jsem importoval databázi WordPress do našeho online nástroje pro modelování databází. Pro informaci, struktura databáze je následující:




Než začneme, měli byste porozumět několika důležitým faktům o databázovém modelu WordPress:

  • Každý web WordPress používá přesně stejnou strukturu databáze. Obsahuje 11 tabulek a každý web WordPress je používá na pozadí. Většina pluginů WordPress také používá databázi bez jakýchkoli změn v databázovém modelu. Model musí být dostatečně flexibilní, aby pojal všechny různé pluginy. Tvůrci pluginů mohou samozřejmě přidat vlastní tabulky pro konkrétní pluginy, pokud se struktura dat výrazně liší nebo pokud jejich plugin ukládá velké množství dat.
  • Databáze WordPress postrádá omezení cizích klíčů . Důvodem je skutečnost, že WordPress používá úložiště MyISAM, které nepodporuje cizí klíče. Tabulky to obcházejí tím, že mají atributy, které ukládají nepropojené hodnoty podobné „cizímu klíči“, takže omezení cizího klíče nebude zkontrolováno databází. Například post_author atribut v wp_posts tabulka je „odkaz“ na atribut „ID“ v wp_users stůl.
  • Většina tabulek používá primární klíč s jedním sloupcem. Jmenují se buď jednoduše „ID“ (v wp_users a wp_posts tabulka) nebo meta_id /umeta_id (v metatabulkách:wp_postmeta , wp_commentmeta a wp_usermeta ), nebo kombinaci názvu tabulky a přípony „_id“ (všechny ostatní tabulky). Jedinou výjimkou z těchto pravidel jsou wp_term_relationships tabulka, kde se primární klíč skládá ze dvou atributů:object_id a term_taxonomy_id . Atributy, které jsou primárním klíčem nebo součástí primárního klíče, jsou typu bigint(20). Primární klíče s jedním atributem mají také vlastnost auto-increment nastavenou na „Ano“.

Příspěvky a stránky

Hlavním důvodem, proč používat WordPress, je vytvářet a manipulovat s obsahem a prezentovat jej veřejnosti. Za tímto účelem nám WordPress poskytuje dva typy obsahu:Stránky a Příspěvky .

Stránky se používají k zobrazení statického obsahu . Nepoužívají značky ani kategorie a nejsou uvedeny podle data. Také neumožňují komentáře nebo sdílení na sociálních sítích. Stránky mohou mít podstránky. O nás stránky jsou dobrými příklady tohoto typu.

Na druhé straně Příspěvky jsou uvedeny podle data a lze je uspořádat pomocí kategorií a značky . Příspěvky mohou být použity ve zdrojích RSS díky jejich chronologickému pořadí. Příspěvky nemohou mít „podpříspěvky“, ale komentáře a sdílení na sociálních sítích jsou možné. Příspěvky jsou v podstatě příspěvky na blogu. To je pochopitelné, protože WordPress se vyvinul z blogovací platformy.

Primární tabulka za obsahem na jakékoli stránce WordPress se nazývá wp_posts :

WordPress používá wp_posts tabulka pro ukládání stránek, příspěvků a příloh. Na tuto tabulku se můžeme dívat jako na jádro naší stránky, místo, kde je uložena většina obsahu. Je důležité zdůraznit, že přílohy jsou ve skutečnosti uloženy na disku a záznam v wp_posts tabulka obsahuje další informace o tom (kdo a kdy to nahrál atd.).

Pole v wp_posts tabulka jsou:

  • post_author – odkaz na wp_users tabulka označující autora příspěvku.
  • post_date – datum a čas, kdy byl záznam vložen do tabulky.
  • post_date_gmt – GMT/UTC datum a čas, kdy byl záznam vložen do tabulky.
  • post_content – skutečný obsah příspěvku.
  • post_title – název příspěvku.
  • post_excerpt – shrnutí obsahu.
  • post_status – aktuální stav příspěvku. WordPress používá 8 výchozích stavů:„Publikovat“, „Budoucnost“, „Koncept“, „Nevyřízeno“, „Soukromé“, „Koš“, „Automatický koncept“ a „Zdědit“.
  • comment_status – zapíná a vypíná komentáře u jednoho příspěvku nebo na celé stránce. Existují dvě možné hodnoty:„open“ a „closed“.
  • ping_status – identifikuje, zda příspěvek umožňuje pingbacky a trackbacky. Jako comment_status , může obsahovat pouze hodnoty „open“ a „closed“.
  • post_password – heslo použité k zobrazení příspěvku (volitelné).
  • post_name – lidsky čitelná adresa URL post_title .
  • to_ping – seznam adres URL, na které má WordPress posílat pingbacky, oddělených „\n“.
  • pinged – seznam adres URL, na které WordPress odeslal pingbacky, oddělených „\n“.
  • post_modified – poslední datum a čas, kdy byl příspěvek upraven.
  • post_modified_gmt – datum GMT/UTC pro post_modified .
  • post_content_filtered – používané pluginy k ukládání nákladných transformací obsahu příspěvků do mezipaměti.
  • post_parent – odkazuje na nadřazený příspěvek.
  • guid – Globální jedinečný identifikátor příspěvku; jeho trvalou adresu URL.
  • menu_order – používá se pro objednávání obsahu.
  • post_type – typ záznamu. Může obsahovat hodnoty „post“, „page“, „attachment“ nebo uživatelsky definované vlastní typy.
  • post_mime_type – typ nahraných souborů definovaný pouze pro příspěvky s post_type = attachment . Může obsahovat hodnoty jako „image“, „application/pdf“ a „application/msword“.
  • comment_count – počet komentářů, pingbacků a zpětných odkazů k příspěvku.

Zde je snímek wp_posts tabulka poté, co jsem přidal stránku „O Nikole Teslovi“:

Když se podíváme na wp_posts tabulky, můžeme vidět několik verzí naší stránky. Záznam s ID = 1post_status = publish , což znamená, že příspěvek je viditelný pro všechny. comment_status = closed a ping_status = closed označuje, že komentáře a ping jsou pro tento příspěvek zakázány.

Veškeré další informace o příspěvcích a stránkách jsou uloženy v wp_postmeta tabulka:

Sloupce v této tabulce jsou následující:

  • meta_id – primární klíč tabulky.
  • post_id – odkaz na wp_posts stůl.
  • meta_key – popis meta_value atribut.
  • meta_value – aktuální uložená hodnota.

wp_postmeta tabulka je místo, kde jsou všechny informace, které nelze uložit do wp_posts tabulka je uložena. Ukládá se jako páry klíč–hodnota, což je technika, která se často nazývá entita–atribut–hodnota (EAV). Tabulku mohou používat pluginy pro vlastní potřeby.

Taxonomie aplikace WordPress

Taxonomie je módní slovo, které v podstatě odkazuje na seskupování věcí dohromady. WordPress má několik vestavěných taxonomií pro seskupování příspěvků. Například kategorie a značky jsou vestavěné taxonomie WordPress. Do WordPressu můžete také přidat své vlastní taxonomie.

Taxonomie a jejich termíny jsou uloženy v tabulkách nazvaných wp_terms , wp_term_taxonomy a wp_term_relationships .

wp_terms tabulka ukládá seznam termínů používaných ke klasifikaci objektů na vašem webu WordPress:

Tato tabulka obsahuje všechny názvy značek a kategorií a také výrazy z našich vlastních taxonomií. Atributy jsou následující:

  • term_id – primární klíč tabulky.
  • name – název termínu.
  • slug – URL name .
  • term_group – používá se k seskupování výrazů.

Zde je obsah wp_terms tabulka:

Termíny jsou k taxonomiím přiřazeny pomocí wp_term_taxonomy tabulka:

Atributy v tabulce jsou:

  • term_taxonomy_id – primární klíč tabulky.
  • term_id – odkaz na wp_terms stůl.
  • taxonomy – název taxonomie.
  • description – popis termínu v dané konkrétní taxonomii.
  • parent – odkaz na nadřazený výraz v wp_terms stůl.
  • count – počet objektů v wp_posts tabulka, která používá tento termín v této taxonomii.

wp_term_taxonomy tabulka nám umožňuje znovu použít stejný termín v různých taxonomích. Všimněte si, že záznam, kde term_id = 1taxonomy = category , zatímco ostatní záznamy mají taxonomy = post_tag .

Chcete-li spojit objekty uložené v wp_posts a wp_term_taxonomy tabulky, WordPress používá wp_term_relationships tabulka:

Všimněte si, že toto je jediná tabulka v modelu, která má klíč složený z více než jednoho atributu.

wp_term_relationships tabulka má následující atributy:

  • object_id – odkaz na wp_posts stůl.
  • term_taxonomy_id – odkaz na wp_term_taxonomy stůl.
  • term_order – termín objednávka pro konkrétní předmět.

Máme zde šest záznamů, které spojují šest záznamů z wp_term_taxonomy tabulka s příspěvkem (object_id = 6 ).

Komentáře a datové modelování WordPress

Podařilo se nám umístit nějaký obsah na naši stránku WordPress. To je hezké, ale ve většině případů chceme získat zpětnou vazbu od veřejnosti. A to je role funkce komentáře.

Pro zobrazení komentářů k příspěvkům můžeme jednoduše použít „Zanechat komentář“ nebo kliknout na „X komentář“ (kde X znamená počet komentářů k příspěvku).

Náš první příspěvek už má jeden komentář. Když na něj klikneme, uvidíme, že jde o automatický komentář způsobený pingbackem. K tomuto příspěvku přidáme ještě jeden komentář:

Nyní vidíme dva komentáře k našemu příspěvku, ale co se za tím vším v databázi skrývá?

Z názvu tabulky můžete uhodnout, že wp_comments tabulka se používá k ukládání komentářů na naší stránce WordPress:

Atributy jsou většinou samozřejmé, ale přesto se na některé z nich podíváme blíže.

comment_post_ID je odkaz na wp_posts stůl; označuje, který příspěvek obdržel komentáře. U prvního komentáře vidíme, že to byl vlastně pingback a že „autor“ je jiný příspěvek. U druhého komentáře vidíme, že jsem autor. Všimněte si také comment_agent obsahuje některé základní informace o systému a počítači použitém k odeslání komentáře.

Hlavní myšlenkou všech tří metatabulek v modelu je ukládat data, která nechceme ukládat do naší primární tabulky. wp_commentmeta souvisí s wp_comments stejným způsobem jako wp_postmeta tabulka souvisí s wp_posts tabulka.

Zobrazení uživatelů WordPress

Jakmile je naše stránka online, může ji vidět kdokoli. Uživatelé WordPressu jsou ti, kteří podle stavu oprávnění mohou provádět změny na našem webu a jeho obsahu.

Nyní se podíváme do wp_users a wp_usermeta tabulky v databázi MySQL.

Jak se očekávalo, wp_users výše uvedená tabulka ukládá základní údaje pro všechny uživatele registrované na našem webu WordPress. Všimněte si, že user_pass je zašifrováno a nový uživatel má user_activation_key atribut vyplněn, zatímco edrkusic má toto pole prázdné.

Zatímco atributy jsou uvedeny v wp_users tabulka je to, co bychom očekávali na jakémkoli webu WordPress, wp_usermeta tabulka se používá k ukládání hodnot, které mohou být specifické pro určitý projekt:

Všimněte si například, že záznam s umeta_id = 25 obsahuje hodnotu „nějaké biografické informace“ , stejný text, který jsme zadali do řídicího panelu při úpravě NewUser. user_id atribut v tomto záznamu má hodnotu 2 , které odpovídá ID nového uživatele v wp_users stůl. Je zřejmé, že user_id je odkaz na wp_users tabulka.

Odkazy a možnosti ve WordPressu

Myšlenka za wp_links tabulka slouží k ukládání odkazů na jiné stránky:

Mít odkazy na jiné stránky bylo na začátku éry blogů velmi populární; v dnešní době se používá stále méně. Od verze WordPressu 3.5 byla správa odkazů dokonce odstraněna z administrátorského rozhraní. Přesto je tato tabulka zachována, aby byla zajištěna kompatibilita se staršími verzemi.

wp_options tabulka ukládá data o instalaci WordPress, konfiguraci webu, motivu, pluginech a widgetech:

Používá se také k ukládání dočasných dat uložených v mezipaměti. V této tabulce je také přítomna logika EAV, stejně jako v wp_usermeta , wp_postmeta a wp_commentmeta . Atribut option_name hraje roli klíče, zatímco atribut option_value je jeho odpovídající hodnota. Další dva atributy v tabulce jsou atributem primárního klíče option_id a autoload , který řídí, zda se volba automaticky načte z databáze.

Vyhodnocení databázového modelu WordPress

Databázový model za WordPressem nedodržuje několik dobrých pravidel a konvencí návrhu databáze. Když navrhujeme databázi pro konkrétní účel a předem známe všechny její požadované funkce, můžeme se řídit všemi těmito pravidly. WordPress však potřebuje pokrýt vše, co by mohl mít kdokoli na mysli, takže obětování cizích klíčů a používání EAV je něco, co je třeba udělat. Atribut ID bych pojmenoval stejně ve všech tabulkách a udělal bych to samé s „cizími klíči“. Například bych nepoužil post_author v wp_posts tabulka, ale zůstal bych u users_id . Kromě toho musím souhlasit s tím, že databáze WordPress je pro svůj účel opravdu skvělým modelem.

Co myslíš? Dejte nám vědět v sekci komentářů.


  1. Funkce NEXT_DAY() v Oracle

  2. Jak reprezentovat Oracle Interval v Javě

  3. Zaručuje UNION ALL pořadí výsledné sady

  4. Spusťte soubor PostgreSQL .sql pomocí argumentů příkazového řádku