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

Desain DB:tabel anggota terpisah atau semua dalam satu tabel?

Itu sangat tergantung pada detail "lainnya" itu. Ini adalah pertanyaan umum dan menarik, dan tidak ada jawaban "keras dan cepat" pada pandangan pertama. Tetapi jika kita memikirkan masalah ini secara lebih abstrak, tentang hubungan aktual antara atribut ("detail") dari hal tertentu yang ingin Anda wakili, kita mungkin menemukan beberapa kejelasan.

Dalam pertanyaan Anda, Anda menyatakan bahwa teman memiliki detail "minimal" dan "lainnya". Daripada mengklasifikasikan detail ini sebagai "minimal" atau "lainnya", mari kita klasifikasikan berdasarkan apakah detail individu ("atom") dapat sepenuhnya ditentukan oleh apa pun yang membuat seorang teman unik.

Saya kira ada beberapa kunci utama (PK), seperti FriendID atau alamat email atau sesuatu. Mempertimbangkan pengidentifikasi unik ini, tanyakan pada diri Anda:"Jika saya diberi tepat satu ID Teman (atau email atau apa pun yang Anda gunakan sebagai PK) detail apa dari teman itu yang benar-benar saya yakini? Misalnya, dengan ID Teman=2112, saya benar-benar tahu nama depan, nama belakang, dan tanggal lahir teman itu, tapi saya tidak benar-benar tahu nomor telepon teman itu karena jumlahnya lebih dari satu.

Kelompokkan bersama dalam satu tabel semua detail yang Anda ketahui dengan jelas berdasarkan PK. Masukkan detail yang Anda perlukan lebih banyak data (seperti "rumah" atau "kantor" dalam hal nomor telepon) di tabel "anak", dengan kunci asing kembali ke tabel "induk" di PK. (Catatan:Sangat mungkin bahwa PK tabel anak akan menjadi gabungan; yaitu, terdiri dari PK tabel induk dan faktor pembeda (seperti "rumah" atau "kantor" dalam contoh ini). Kunci gabungan untuk banyak sisi hubungan 1-M sangat baik.)

Geeks database menyebut dekomposisi ini berdasarkan dependensi fungsional .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Campuran ilegal dari susunan (utf8_unicode_ci,IMPLICIT) dan (utf8_general_ci,IMPLICIT) untuk operasi '='

  2. Cara Menghapus Sepenuhnya MySQL 5.7 Dari Windows

  3. cara memublikasikan penginstal aplikasi jendela c#

  4. @ Simbol - solusi untuk kueri SELECT Rekursif di Mysql?

  5. Masalah KUNCI UTAMA dengan membuat tabel di Rails menggunakan rake db:migrate perintah dengan mysql