Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

tabel mysql dengan 40+ kolom

Seperti biasa - itu tergantung.

Pertama, ada jumlah maksimum kolom yang dapat MySQL dukungan , dan Anda tidak benar-benar ingin sampai di sana.

Kedua, ada dampak kinerja saat menyisipkan atau memperbarui jika Anda memiliki banyak kolom dengan indeks (walaupun saya tidak yakin apakah ini penting pada perangkat keras modern).

Ketiga, tabel besar sering kali menjadi tempat pembuangan semua data yang tampaknya terkait dengan entitas inti; ini dengan cepat membuat desain tidak jelas. Misalnya, desain yang Anda tampilkan menunjukkan 3 bidang jenis "status" yang berbeda (status, is_admin, dan fb_account_verified) - Saya menduga ada beberapa logika bisnis yang harus menautkannya (misalnya, admin harus pengguna terverifikasi), tetapi Anda desain tidak mendukung itu.

Ini mungkin atau mungkin tidak menjadi masalah - ini lebih merupakan pertanyaan konseptual, arsitektur/desain daripada kinerja/apakah itu akan berhasil. Namun, dalam kasus tersebut, Anda dapat mempertimbangkan untuk membuat tabel untuk mencerminkan informasi terkait tentang akun, meskipun tidak memiliki hubungan x-ke-banyak. Jadi, Anda dapat membuat "user_profile", "user_credentials", "user_fb", "user_activity", semua ditautkan oleh user_id. Ini membuatnya lebih rapi, dan jika Anda harus menambahkan lebih banyak bidang terkait facebook, mereka tidak akan menjuntai di ujung meja. Namun, itu tidak akan membuat database Anda lebih cepat atau lebih terukur. Biaya bergabung cenderung diabaikan.

Apa pun yang Anda lakukan, opsi 2 - membuat serial "bidang yang jarang digunakan" menjadi satu bidang teks - adalah ide yang buruk. Anda tidak dapat memvalidasi data (jadi tanggal mungkin tidak valid, angka mungkin teks, bukan nol mungkin hilang), dan penggunaan apa pun dalam klausa "di mana" menjadi sangat lambat.

Alternatif yang populer adalah toko "Entitas/Atribut/Nilai" atau "Kunci/Nilai". Solusi ini memiliki beberapa manfaat - Anda dapat menyimpan data Anda dalam database relasional bahkan jika skema Anda berubah atau tidak diketahui pada waktu desain. Namun, mereka juga memiliki kekurangan:sulit untuk memvalidasi data di tingkat basis data (tipe data dan nullability), sulit untuk membuat tautan bermakna ke tabel lain menggunakan hubungan kunci asing, dan kueri data bisa menjadi sangat rumit - bayangkan menemukan semua mencatat status 1 dan facebook_id null dan tanggal pendaftaran lebih besar dari kemarin.

Mengingat Anda tampaknya mengetahui skema data Anda, menurut saya "kunci/nilai" bukanlah pilihan yang baik.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Perintah Pembaruan MySQL tidak berfungsi

  2. Menyimpan nilai Latitude dan Longitude ke Database MySQL iOS

  3. SQL ORDER OLEH beberapa kolom

  4. Aplikasi Android untuk mengirim gambar ke MySQL

  5. MySQL REPLACE() – Ganti Semua Contoh Substring dengan String lain