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

Butuh tip tentang desain db MySQL sederhana

Mengapa Anda memiliki attribute tabel ?

Atribut adalah kolom, bukan tabel.

Tautan situs web tidak memberi tahu kami apa pun.

Ide keseluruhan dari database adalah Anda menggabungkan banyak tabel kecil, seperti yang diperlukan, untuk setiap kueri, jadi Anda harus terbiasa dengan itu. Tentu, ini memberi Anda kisi, tetapi yang pendek dan manis, tanpa Nulls. Apa yang Anda coba lakukan adalah menghindari tabel; pergi hanya dengan satu kotak besar, yang penuh dengan Nulls.

(snip)

Jangan awali nama atribut Anda (nama kolom) dengan nama tabel, yang berlebihan. Ini akan menjadi jelas bagi Anda ketika Anda mulai menulis SQL yang menggunakan lebih dari satu tabel:maka Anda dapat menggunakan nama tabel atau alias untuk mengawali nama kolom yang ambigu.

Pengecualian adalah PK, yang dirender sepenuhnya, dan digunakan dalam bentuk itu di mana pun itu adalah FK.

Jelajahi situs, dan baca beberapa pertanyaan SQL.

Setelah melakukan itu, nanti, Anda dapat memikirkan apakah Anda inginstrength dan defense menjadi atribut (kolom) dari type; atau tidak. Dan lain-lain.

Respons terhadap Komentar 30 Nov 10

.
Bagus, Anda memahami data Anda. Benar. Sekarang saya mengerti mengapa Anda memiliki tabel Atribut.

  1. Pastikan 10 contoh itu representatif, saya memperhatikannya dengan cermat.

    • Jenis:Permata Nama:Emberspark Pendant ... Atau, apakah NeckMiscellaneous suatu tipe?
    • Apakah Unique adalah ItemType yang sebenarnya ? Saya rasa Tidak
    • Action.Display "Harap kembali ke Penyelenggara Musim"
    • Di mana Atribut untuk AttackPower dan HitRating ?
      .
  2. Ada berapa jenis barang yang berbeda (dari 35.000), ala contoh Cluster Produk saya. Cara lain untuk menyatakan pertanyaan itu adalah, berapa banyak variasi yang ada. Maksud saya, secara bermakna, bukan 3500 Item 8 Atribut ?

  3. Akankah item_attributes berubah tanpa pelepasan s/w (mis. Inner Strength baru atribut) ?

  4. Per Item, Atribut apa yang berulang (lebih dari satu); sejauh ini saya hanya melihat Action ?

  5. Ini adalah permainan, jadi Anda membutuhkan db yang ketat dan sangat cepat, mungkin sepenuhnya penduduk memori, kan. Tidak ada Null. Tidak ada VAR Apa pun. Tipe Data Terpendek. Jangan Menduplikasi Apa Pun (Jangan Ulangi Diri Anda). Apakah Anda senang dengan bit (boolean) dan vektor?

  6. Apakah Anda perlu dengan mudah menerjemahkan regex tersebut ke dalam SQL, atau apakah Anda senang dengan kerja keras yang serius untuk masing-masing (mis. setelah Anda membuatnya bekerja di SQL, mereka cukup stabil dan kemudian Anda tidak mengacaukannya, kecuali jika Anda menemukan bug ) (tidak ada sarkasme, pertanyaan serius) ?

    6.1 Atau mungkin sebaliknya:db adalah disk-resident; Anda memuatnya ke dalam memori sekali; Anda menjalankan regex itu selama bermain game; kadang-kadang menulis ke disk. Oleh karena itu tidak perlu menerjemahkan regex ke SQL ?

Inilah Model Data tujuan saya, ini sama sekali tidak pasti; itu akan dimodulasi oleh jawaban Anda. Untuk lebih jelasnya:

  • Bentuk Normal Keenam adalah Baris terdiri dari Kunci Utama dan, paling banyak, satu Atribut.

  • Saya telah menggambar (6.1) bukan (6), karena data Anda memperkuat keyakinan saya bahwa Anda memerlukan basis data relasional 6NF murni

  • Model Data Kluster Produk saya , contoh yang lebih baik dari EAV, adalah 6NF, lalu Dinormalisasi lagi (Tidak dalam arti Bentuk Normal) oleh DataType, untuk mengurangi tidak ada tabel, yang telah Anda lihat. (Orang EAV biasanya memilih satu atau beberapa meja raksasa.)

  • Ini adalah 5NF lurus, dengan hanya 2 tabel di sebelah kanan dalam 6NF.

Tautan ke Model Data Game

Tautan ke Notasi IDEF1X bagi mereka yang tidak terbiasa dengan Standar Pemodelan Relasional.

Respons untuk Edit #2 05 Des 10

1.1. Oke, dikoreksi.

1.2. Maka IsUnique adalah Indikator (boolean) untuk Item.

1.3. Tindakan. Saya mengerti. Jadi Di mana Anda akan menyimpannya?

1.4. NeckMiscellaneous berarti item tersebut berada di kedua kategori Neck dan Misc . Itu berarti dua Item.Name=Emberspark Pendant yang terpisah , masing-masing dengan Kategori yang berbeda.

.
2. dan 5. Jadi, Anda membutuhkan db residen memori yang cepat dan cepat. Itu sebabnya saya mencoba membawa Anda melewati batas, menjauh dari GridLand, ke RelationalLand.
.
3. Ok, kita tetap menggunakan Fifth Normal Form, tidak perlu 6NF atau Product Cluster (tabel per Datatype). Sejauh ini Values semuanya Bilangan Bulat.
.
4. Saya dapat melihat tambahan:Level , RequiredLevel , IsUnique , BindsPickedUp , BindsEquipped .
.
5. Bit adalah boolean { 0 | 1 }. Vektor diperlukan untuk proyeksi (Relasional). Kita akan mendapatkannya nanti.
.
6. Oke, Anda sudah menjelaskan, Anda tidak menerjemahkan ekspresi reguler ke SQL. (Slog artinya kerja keras)..
7. Apa itu Category.ParentId ? Kategori Induk ? Itu belum pernah muncul sebelumnya.
.
8. Atribut.GeneratedId ?

Silakan mengevaluasi Model Data (Diperbarui). Saya memiliki beberapa kolom lagi, selain yang Anda miliki di kolom Anda. Jika ada sesuatu yang Anda tidak mengerti dalam Model Data, ajukan pertanyaan spesifik. Anda telah membaca dokumen Notasi, kan?

Saya memiliki Action sebagai tabel, dengan ItemAction memegang Values :
Equip: increase attack power by 28 adalah Action.Name =Increase attack power by dan ItemAction.Value =28.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mengonfigurasi koneksi database dalam kerangka Yii

  2. Dapatkan baris terbaru untuk ID yang diberikan

  3. Bagaimana Operator LIKE Bekerja di MySQL

  4. Fungsi IF di H2 untuk kompatibilitas MySQL

  5. Mengekspor hasil kueri MySQL ke excel?