Saya jarang tidak setuju dengan pengguna yang berpengetahuan luas, tetapi dalam hal ini saya tidak bisa menahannya. Menurut pendapat saya menyebut penggunaan tabel database non-inti praktik buruk per se hanyalah salah.
Pilihan apakah akan menggunakan tabel inti atau menambahkan tabel Anda sendiri tergantung pada beberapa faktor.
Waktu eksekusi kueri tergantung pada ukuran tabel. Oleh karena itu, jika Anda berencana menyimpan sejumlah besar data, tabel terpisah yang melayani hanya satu set data spesifik jenis ini pasti akan menjadi solusi yang lebih efisien.
Jika Anda menyimpan banyak posting reguler atau CPT di samping set data spesifik ini, wp_posts
dan juga wp_postmeta
dapat tumbuh dengan cepat.
Bagi saya, pilihan ini pada akhirnya tergantung pada seberapa "cekatan" datanya. Haruskah itu mendukung penulis, komentar, revisi, kutipan atau sejenisnya? Jika demikian, saya akan menggunakan CPT dan / atau fungsionalitas inti. Jika tidak, saya akan menggunakan tabel terpisah untuk penggunaan dan efisiensi sumber daya.
Jika gagasan Eugene benar, tidak ada plugin yang ditulis dengan baik akan menambahkan tabel mereka sendiri, yang untungnya bukan itu masalahnya.
Menggunakan tabel DB inti WP adalah praktik terbaik
$wpdb
kelas .wp_options
, dan dengan memaksa pengembang Plugin untuk mempertimbangkan dengan cermat jenis data yang dibuat / disimpan - apakah itu CPT? apakah itu taksonomi? apakah itu memposting meta?WordPress menyediakan sarana bagi Plugin untuk menambahkan tabel ke basis datanya
Namun, untuk kasus-kasus penggunaan di mana tabel DB terpisah diperlukan, pastikan untuk menggunakan metode yang disediakan WordPress untuk menambahkan tabel kustom Anda ke database WordPress , terutama sehingga Anda dapat mengambil keuntungan dari
$wpdb
kelas yang kuat . Perhatikan informasi / peringatan daftar entri Codex ini:Dengan demikian, kita dapat menyimpulkan hal berikut:
sumber
$wpdb
(memanfaatkannya dengan tabel non-inti tersirat dalam jawaban saya, tidak akan mau ketinggalan kelas itu)Tabel database non inti adalah suatu keharusan jika data Anda lebih kompleks daripada model posting WordPress, itu akan menjadi besar, dan memiliki banyak detail meta yang akan dicari.
Format EAV yang digunakan WordPress untuk meta postingnya tidak cocok untuk pencarian multi-kriteria.
Jika Anda membagi meta Anda menjadi banyak entri, Anda akan memiliki banyak entri per posting di tabel meta posting, dan mencari setiap posting melalui meta akan jauh lebih lambat.
Jika Anda menyimpan semua meta berseri dalam array dan memilikinya hanya sebagai satu entri di pos meta, kali ini Anda akan dipaksa untuk melakukan hanya pencarian teks di dalam meta itu, dan Anda tidak akan dapat menggunakan operator perbandingan langsung dalam kueri sql Anda.
Bukan masalah besar jika plugin Anda tidak akan memiliki ribuan entri dan meta terkait.
Tetapi masalah besar jika plugin Anda akan melakukan sesuatu yang besar.
Situasi Anda, nama file sebagai entri independen dan 3 entri data meta yang terlampir pada entri itu tampaknya tidak begitu besar. Anda dapat menggunakan tabel posting wordpress dan tabel meta untuk itu.
TETAPI, jika orang akan mencari 3 meta ini banyak, TERUTAMA dalam hubungannya, maka saya akan merekomendasikan bahwa Anda mengatur tabel terpisah.
Dengan format itu hanya satu tabel dengan hanya satu entri, yang juga berisi semua meta akan baik-baik saja, dan akan meminta kilat cepat.
Secara kebetulan, jika Anda menggunakan tabel WordPress dan juga Anda menggunakan caching permintaan, pengguna mencari data Anda akan di-cache dari waktu ke waktu dan mengurangi beban. Tapi itu tidak akan begitu bijaksana dengan melakukan tabel terpisah.
sumber
Anda dapat mengunggah file ke perpustakaan media. Setiap item di perpustakaan media disimpan
wp_posts
tabelnya. Ini berarti bahwa setiap file dapat memiliki data meta. Anda dapat menyimpan informasi sebanyak yang Anda butuhkan per setiap file dalamwp_postmeta
tabel dengan menggunakan Metadata API .Ya, itu adalah praktik buruk untuk membuat tabel sendiri, jika Anda dapat menggunakan fungsionalitas inti saja.
sumber
sumber