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

Bagaimana cara menyimpan data dengan jumlah atribut dinamis dalam database

Jika Anda pernah berencana mencari atribut tertentu, adalah ide yang buruk untuk membuat cerita bersambung ke dalam satu kolom, karena Anda harus menggunakan fungsi per baris untuk mengeluarkan informasi - ini jarang berskala baik.

Saya akan memilih pilihan kedua Anda. Memiliki daftar atribut dalam tabel atribut, objek dalam tabelnya sendiri, dan tabel hubungan banyak ke banyak yang disebut atribut objek.

Misalnya:

objects:
    object_id    integer
    object_name  varchar(20)
    primary key  (object_id)
attributes:
    attr_id      integer
    attr_name    varchar(20)
    primary key  (attr_id)
object_attributes:
    object_id    integer  references (objects.object_id)
    attr_id      integer  references (attributes.attr_id)
    oa_value     varchar(20)
    primary key (object_id,attr_id)

Kekhawatiran Anda tentang kinerja dicatat tetapi, menurut pengalaman saya, selalu lebih mahal untuk membagi kolom daripada menggabungkan beberapa kolom. Jika ternyata ada masalah kinerja, sangat dapat diterima untuk memecahkan 3NF karena alasan kinerja.

Dalam hal ini saya akan menyimpannya dengan cara yang sama tetapi juga memiliki kolom dengan data serial mentah. Asalkan Anda menggunakan pemicu penyisipan/pembaruan untuk menjaga agar data kolom dan gabungan tetap sinkron, Anda tidak akan mengalami masalah. Tapi Anda tidak perlu khawatir tentang itu sampai masalah yang sebenarnya muncul.

Dengan menggunakan pemicu tersebut, Anda meminimalkan pekerjaan yang diperlukan untuk hanya ketika data berubah. Dengan mencoba mengekstrak informasi sub-kolom, Anda melakukan pekerjaan yang tidak perlu pada setiap pilih.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Instal MySQL:ERROR:Gagal membuat ekstensi asli permata

  2. MySql.Data.MySqlClient.MySqlException:Batas waktu kedaluwarsa

  3. MySqlCommand().ExecuteReader().GetString() tidak berfungsi

  4. Cara mengubah massal MySQL Triggers DEFINER

  5. merekayasa balik database mysql untuk membuat aplikasi Django