Database
 sql >> Teknologi Basis Data >  >> RDS >> Database

WordPress – Di Balik Layar, Bagian 2

Di Bagian 1 dari seri ini, saya menunjukkan cara menginstal WordPress secara lokal dan cara mengimpor database WordPress ke Vertabelo. Dalam artikel ini, kita akan melihat lebih dekat tabel di database WordPress.

Tinjauan Singkat Model Basis Data WordPress dan Dasbor

Di bagian sebelumnya, saya mengimpor database WordPress ke alat pemodelan database online kami. Sebagai catatan, struktur databasenya adalah sebagai berikut:




Ada beberapa fakta penting tentang model database WordPress yang harus Anda pahami sebelum kita mulai:

  • Setiap situs WordPress menggunakan struktur database yang sama persis. Ini berisi 11 tabel dan setiap situs WordPress menggunakannya di latar belakang. Sebagian besar plugin WordPress juga menggunakan database tanpa perubahan dalam model database. Model harus cukup fleksibel untuk mengakomodasi semua plugin yang berbeda. Tentu saja, pembuat plugin dapat menambahkan tabel khusus untuk plugin tertentu jika struktur datanya sangat berbeda atau jika plugin mereka menyimpan data dalam jumlah besar.
  • Database WordPress tidak memiliki batasan kunci asing . Ini karena WordPress menggunakan mesin penyimpanan MyISAM, yang tidak mendukung kunci asing. Tabel mengatasi ini dengan memiliki atribut yang menyimpan nilai seperti "kunci asing" yang tidak terhubung, sehingga batasan kunci asing tidak akan diperiksa oleh database. Misalnya, post_author atribut di wp_posts tabel adalah "referensi" ke atribut "ID" di wp_users meja.
  • Sebagian besar tabel menggunakan kunci utama kolom tunggal. Mereka hanya diberi nama “ID” (di wp_users dan wp_posts tabel), atau meta_id /umeta_id (di tabel meta:wp_postmeta , wp_commentmeta dan wp_usermeta ), atau kombinasi nama tabel dan akhiran “_id” (semua tabel lainnya). Satu-satunya pengecualian untuk aturan ini adalah wp_term_relationships tabel, di mana kunci utama terdiri dari dua atribut:object_id dan term_taxonomy_id . Atribut yang merupakan primary key atau bagian dari primary key bertipe bigint(20). Kunci utama atribut tunggal juga memiliki properti peningkatan otomatis yang disetel ke “Ya”.

Pos dan Halaman

Alasan utama menggunakan WordPress adalah untuk membuat dan memanipulasi konten dan menyajikannya kepada publik. Untuk itu, WordPress memberi kita dua jenis konten:Halaman dan Pos .

Halaman digunakan untuk menampilkan konten statis . Mereka tidak menggunakan tag atau kategori dan tidak terdaftar berdasarkan tanggal. Juga mereka tidak mengizinkan komentar atau berbagi media sosial. Halaman dapat memiliki subhalaman. Tentang Kami halaman adalah contoh yang baik dari jenis ini.

Sebaliknya, Pos terdaftar berdasarkan tanggal dan dapat diatur menggunakan kategori dan tag . Postingan dapat digunakan di RSS feed, berkat urutan kronologisnya. Posting tidak boleh memiliki "subpost", tetapi komentar dan berbagi media sosial dimungkinkan. Posting pada dasarnya adalah posting blog. Hal ini dapat dimengerti, karena WordPress berevolusi dari platform blogging.

Tabel utama di balik konten di halaman WordPress mana pun disebut wp_posts :

WordPress menggunakan wp_posts tabel untuk menyimpan halaman, posting, dan lampiran. Kita dapat melihat tabel ini sebagai inti halaman kita, tempat sebagian besar konten disimpan. Penting untuk menunjukkan bahwa lampiran sebenarnya disimpan di disk dan catatan di wp_posts tabel menyimpan lebih banyak informasi tentangnya (siapa yang mengunggahnya dan kapan, dll.).

Kolom di wp_posts tabelnya adalah:

  • post_author – referensi ke wp_users tabel, yang menunjukkan penulis postingan.
  • post_date – tanggal dan waktu saat catatan dimasukkan ke dalam tabel.
  • post_date_gmt – tanggal dan waktu GMT/UTC saat catatan dimasukkan ke dalam tabel.
  • post_content – isi postingan yang sebenarnya.
  • post_title – judul postingan.
  • post_excerpt – ringkasan konten.
  • post_status - status posting saat ini. WordPress menggunakan 8 status default:“Terbitkan”, “Masa Depan”, “Draf”, “Tertunda”, “Pribadi”, “Sampah”, “Draf Otomatis”, dan “Mewarisi”.
  • comment_status – mengaktifkan dan menonaktifkan komentar pada satu posting atau di seluruh halaman. Ada dua kemungkinan nilai:"terbuka" dan "tertutup".
  • ping_status – mengidentifikasi apakah sebuah pos memungkinkan pingback dan trackback. Sukai comment_status , itu hanya dapat berisi nilai "terbuka" dan "tertutup".
  • post_password – kata sandi yang digunakan untuk melihat postingan (opsional).
  • post_name – url yang dapat dibaca manusia dari post_title .
  • to_ping – daftar URL yang harus dikirimi pingback oleh WordPress, dibatasi oleh “\n”.
  • pinged – daftar URL yang telah dikirimi pingback oleh WordPress, dibatasi oleh “\n”.
  • post_modified – tanggal dan waktu terakhir postingan diubah.
  • post_modified_gmt – tanggal GMT/UTC untuk post_modified .
  • post_content_filtered – digunakan oleh plugin untuk men-cache transformasi konten posting yang mahal.
  • post_parent – mereferensikan postingan induk.
  • guid – Pengidentifikasi Unik Global untuk sebuah pos; URL permanennya.
  • menu_order – digunakan untuk pemesanan konten.
  • post_type - jenis catatan. Ini dapat berisi nilai “posting”, “halaman”, “lampiran”, atau jenis kustom yang ditentukan pengguna.
  • post_mime_type – jenis file yang diunggah yang ditentukan hanya untuk postingan dengan post_type = attachment . Itu dapat berisi nilai seperti "gambar", "aplikasi/pdf" dan "aplikasi/msword".
  • comment_count – jumlah komentar, pingback, dan trackback postingan.

Berikut adalah cuplikan dari wp_posts tabel setelah saya menambahkan halaman “Tentang Nikola Tesla”:

Saat kita melihat wp_posts tabel, kita bisa melihat beberapa versi halaman kita. Catatan dengan ID = 1 memiliki post_status = publish , artinya postingan dapat dilihat oleh semua orang. comment_status = closed dan ping_status = closed menunjukkan bahwa komentar dan ping dinonaktifkan untuk postingan ini.

Setiap informasi tambahan tentang posting dan halaman disimpan di wp_postmeta tabel:

Kolom dalam tabel ini adalah sebagai berikut:

  • meta_id – kunci utama tabel.
  • post_id – referensi ke wp_posts meja.
  • meta_key – deskripsi meta_value atribut.
  • meta_value – nilai sebenarnya yang disimpan.

wp_postmeta tabel adalah tempat semua informasi yang tidak dapat disimpan di wp_posts tabel disimpan. Itu disimpan sebagai pasangan nilai-kunci, teknik yang sering disebut nilai-atribut-entitas (EAV). Tabel dapat digunakan oleh plugin untuk kebutuhan khusus.

Taksonomi WordPress

Taksonomi adalah kata mewah yang pada dasarnya mengacu pada pengelompokan hal-hal bersama-sama. WordPress memiliki beberapa taksonomi bawaan untuk mengelompokkan postingan. Misalnya, kategori dan tag adalah taksonomi WordPress bawaan. Anda juga dapat menambahkan taksonomi kustom Anda sendiri ke WordPress.

Taksonomi dan istilahnya disimpan dalam tabel yang disebut wp_terms , wp_term_taxonomy , dan wp_term_relationships .

wp_terms table menyimpan daftar istilah yang digunakan untuk mengklasifikasikan objek di situs WordPress Anda:

Tabel ini menampung semua nama tag dan kategori, serta istilah dari taksonomi khusus kami. Atributnya adalah sebagai berikut:

  • term_id – kunci utama tabel.
  • name – nama istilahnya.
  • slug – URL name .
  • term_group – digunakan untuk mengelompokkan istilah bersama.

Berikut adalah isi dari situs contoh kami wp_terms tabel:

Istilah ditetapkan ke taksonomi dengan bantuan wp_term_taxonomy tabel:

Atribut dalam tabel adalah:

  • term_taxonomy_id – kunci utama tabel.
  • term_id – referensi ke wp_terms meja.
  • taxonomy – nama taksonomi.
  • description – deskripsi istilah dalam taksonomi tertentu.
  • parent – referensi ke istilah induk dalam wp_terms meja.
  • count – jumlah objek dalam wp_posts tabel yang menggunakan istilah ini dalam taksonomi ini.

wp_term_taxonomy tabel memungkinkan kita untuk menggunakan kembali istilah yang sama di berbagai taksonomi. Perhatikan bahwa catatan di mana term_id = 1 memiliki taxonomy = category , sedangkan catatan lainnya memiliki taxonomy = post_tag .

Untuk menghubungkan objek yang disimpan di wp_posts dan wp_term_taxonomy tabel, WordPress menggunakan wp_term_relationships tabel:

Perhatikan bahwa ini adalah satu-satunya tabel dalam model yang memiliki kunci yang terdiri dari lebih dari satu atribut.

wp_term_relationships tabel memiliki atribut berikut:

  • object_id – referensi ke wp_posts meja.
  • term_taxonomy_id – referensi ke wp_term_taxonomy meja.
  • term_order – urutan istilah untuk objek tertentu.

Kami memiliki enam catatan di sini yang menghubungkan enam catatan dari wp_term_taxonomy tabel dengan pos (object_id = 6 ).

Komentar dan Pemodelan Data WordPress

Kami berhasil menempatkan beberapa konten di halaman WordPress kami. Itu bagus, tetapi dalam banyak kasus kami ingin mendapatkan umpan balik dari publik. Dan itulah peran fitur komentar.

Untuk melihat komentar pada postingan, kita cukup menggunakan “Leave a comment” atau klik “X Comment” (X adalah singkatan dari jumlah komentar untuk postingan).

Posting pertama kami sudah memiliki satu komentar. Ketika kami mengkliknya, kami akan melihat itu adalah komentar otomatis yang disebabkan oleh pingback. Kami akan menambahkan satu komentar lagi ke postingan itu:

Kami sekarang melihat dua komentar untuk posting kami, tapi apa yang ada di balik semua itu di database?

Anda dapat menebak dari nama tabel bahwa wp_comments table digunakan untuk menyimpan komentar di halaman WordPress kami:

Atributnya sebagian besar sudah cukup jelas, tetapi kami masih akan melihat lebih dekat beberapa di antaranya.

comment_post_ID adalah referensi ke wp_posts meja; itu menunjukkan pos mana yang telah menerima komentar. Untuk komentar pertama, kita dapat melihat bahwa itu sebenarnya pingback dan bahwa "penulis" adalah posting lain. Untuk komentar kedua, kita dapat melihat bahwa saya adalah penulisnya. Perhatikan juga comment_agent berisi beberapa info dasar tentang sistem dan komputer yang digunakan untuk mengirim komentar.

Ide utama di balik ketiga tabel meta dalam model ini adalah untuk menyimpan data yang tidak ingin kita simpan di tabel utama kita. wp_commentmeta terkait dengan wp_comments tabel dengan cara yang sama seperti wp_postmeta tabel terkait dengan wp_posts tabel.

Melihat Pengguna WordPress

Setelah halaman kami online, siapa pun dapat melihatnya. Pengguna WordPress adalah orang-orang yang, sesuai dengan status izinnya, dapat melakukan perubahan pada situs kami dan kontennya.

Sekarang kita akan mengintip wp_users dan wp_usermeta tabel di database MySQL.

Seperti yang diharapkan, wp_users tabel yang ditunjukkan di atas menyimpan data dasar untuk semua pengguna yang terdaftar di situs WordPress kami. Perhatikan bahwa user_pass dienkripsi dan Pengguna Baru memiliki user_activation_key atribut diisi saat edrkusic mengosongkan bidang itu.

Sedangkan atribut yang tercantum di wp_users tabel adalah apa yang kami harapkan di situs WordPress mana pun, wp_usermeta table digunakan untuk menyimpan nilai yang mungkin spesifik untuk proyek tertentu:

Misalnya, perhatikan bahwa catatan dengan umeta_id = 25 mengandung nilai “beberapa info biografis” , teks yang sama yang kita ketik di dasbor saat mengedit Pengguna Baru. user_id atribut dalam catatan itu memiliki nilai 2 , yang sesuai dengan ID Pengguna Baru di wp_users meja. Jelas, user_id adalah referensi ke wp_users tabel.

Tautan dan Opsi di WordPress

Ide di balik wp_links tabel adalah untuk menyimpan tautan ke situs lain:

Memiliki link ke situs lain sangat populer di awal era blogging; saat ini digunakan semakin sedikit. Dari WordPress versi 3.5, administrasi tautan bahkan dihapus dari antarmuka admin. Namun, tabel ini disimpan untuk menyediakan kompatibilitas dengan versi yang lebih lama.

wp_options tabel menyimpan data tentang instalasi WordPress, konfigurasi situs, tema, plugin, dan widget:

Ini juga digunakan untuk menyimpan data cache sementara. Logika EAV juga ada di tabel ini, seperti di wp_usermeta , wp_postmeta dan wp_commentmeta . Atribut option_name memainkan peran kunci, sedangkan atribut option_value adalah nilai yang sesuai. Dua atribut lainnya dalam tabel adalah atribut kunci utama option_id dan autoload , yang mengontrol apakah opsi dimuat secara otomatis dari database.

Mengevaluasi Model Basis Data WordPress

Model database di belakang WordPress tidak mengikuti beberapa aturan dan konvensi desain database yang baik. Saat kami mendesain database untuk tujuan tertentu, mengetahui semua fungsi yang diinginkan sebelumnya, kami dapat mengikuti semua aturan tersebut. Tetapi WordPress perlu mencakup apa pun yang ada dalam pikiran siapa pun, jadi mengorbankan kunci asing dan menggunakan EAV adalah sesuatu yang harus dilakukan. Saya akan memberi nama atribut ID yang sama di semua tabel, dan melakukan hal yang sama dengan "kunci asing". Misalnya, saya tidak akan menggunakan post_author di wp_posts tabel, tapi saya akan tetap menggunakan users_id . Selain ini, saya harus setuju bahwa database WordPress benar-benar model yang bagus untuk tujuannya.

Bagaimana menurutmu? Beri tahu kami di bagian komentar.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Alias ​​Dijelaskan

  2. Bekerja dengan Data ODBC di DbVisualizer

  3. Apa cara tercepat untuk menghitung median?

  4. Menggunakan Ekspresi untuk Memfilter Data Database

  5. 5 kesalahan desain kueri SQL yang sangat umum untuk dihindari dengan cara apa pun