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

proposal struktur tabel mysql?

Tidak, ini adalah desain yang buruk untuk database relasional. Ini adalah contoh Entity-Attribute-Value desain. Ini fleksibel, tetapi melanggar sebagian besar aturan tentang apa artinya menjadi database relasional.

Sebelum Anda masuk ke desain EAV sebagai solusi untuk database yang fleksibel, baca cerita ini:CaRMa Buruk .

Lebih khusus lagi, beberapa masalah dengan EAV meliputi:

  • Anda tidak akan tahu atribut apa yang ada untuk ID_NUM tertentu tanpa menanyakannya.
  • Anda tidak dapat mewajibkan atribut apa pun, yang setara dengan NOT NULL.
  • Anda tidak dapat menggunakan batasan basis data.
  • Anda tidak dapat menggunakan tipe data SQL; value kolom harus berupa VARCHAR yang panjang.
  • Khususnya di MySQL, setiap VARCHAR disimpan di halaman datanya sendiri, jadi ini sangat boros.

Kueri juga sangat kompleks saat Anda menggunakan desain EAV. Magento, platform e-niaga sumber terbuka, menggunakan EAV secara ekstensif, dan banyak pengguna mengatakan bahwa ini sangat lambat dan sulit untuk menanyakan apakah Anda memerlukan laporan khusus.

Agar relasional, Anda harus menyimpan setiap atribut yang berbeda di kolomnya sendiri, dengan namanya sendiri dan tipe data yang sesuai.

Saya telah menulis lebih banyak tentang EAV dalam presentasi saya Berorientasi Objek Praktis Model dalam SQL dan dalam posting blog saya EAV FAIL , dan dalam buku saya, SQL Antipatterns:Menghindari Perangkap Pemrograman Basis Data .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana saya bisa mengembalikan perintah penghapusan terakhir saya di MySQL?

  2. Permintaan MySQL untuk memilih hasil dengan kenaikan otomatis sebagai kolom baru ditambahkan dalam hasil

  3. Masukkan bidang ID yang dihasilkan dari pemicu, tetapi tidak diteruskan

  4. Bagaimana cara mengubah html menjadi pdf dengan php?

  5. Tidak dapat terhubung ke server MySQL lokal di docker-compose