Katakanlah dalam beberapa tabel acak, Anda memiliki status kolom bernama . Nilai-nilai dunia nyata akan diaktifkan atau dinonaktifkan .
Apakah lebih baik untuk tipe data kolom ini menjadi int / bool (1 atau nol) atau untuk digunakan ENUM
dengan nilai sedang enabled
dan disabled
? Apa kelebihan atau kekurangannya?
Katakanlah alih-alih hanya dua status yang valid, Anda memiliki 4 atau 10 atau bahkan lebih? Apakah keuntungan dan kerugian bergoyang ke satu sisi atau yang lain karena jumlah nilai yang diminta meningkat?
mysql
database-design
datatypes
Jake Wilson
sumber
sumber
Jawaban:
Saya menemukan artikel yang sangat aneh tetapi informatif tentang 8 alasan mengapa seseorang tidak boleh menggunakan ENUM.
Bahkan tanpa artikel itu, saya tahu
sumber
units
model untuk item toko di mana setiap catatan harus memiliki properti untuk unit terkaitcomposition
. yaitu Ton, Kg, gmYa, pertama-tama kita memiliki persyaratan penyimpanan . Saya akan menganggap Anda berarti tinyint (bukan int).
Jadi, di permukaan, semuanya sama saja. ENUM memang mengambil beberapa metadata untuk nilai string yang terkait dengannya ( src yang lebih tua )
Saya akan mengatakan ketika Anda menambahkan lebih banyak nilai, setiap keuntungan mulai menjauh
ENUM
. Terutama jika Anda menambahkan nilai setelah tabel sudah digunakan, karena Anda harus mengubah struktur tabel untuk mengakomodasi.Apa keuntungan menggunakan
ENUM
? Representasi string tentang apa artinya nilai. Itu saja, sejauh yang saya ketahui. Betapa berharganya itu tergantung pada aplikasi Anda.sumber
Saya menemukan ENUM adalah definisi bentuk pendek dari tabel kode. Keuntungan utamanya adalah menghindari kode yang diperlukan untuk bergabung dan menunjukkan deskripsi kode. Ini juga memudahkan pengaturan nilai jika mereka tiba dalam bentuk string.
Saya merasa memiliki kelemahan sebagai berikut:
sumber