私はオンラインカードゲーム(ハートストンのようなもの)のためのデッキビルダーで作業しています。私は自分のデータベースをどのように扱うべきかについてアドバイスを求めています。デッキビルダーのデータベースへのアドバイス
すぐに要約すると、各カードはコモン/アンコモン/レア/伝説/無限になります。
私は1つのテーブルを作成する必要がありますが、私は私はこのような各カードのために無限/伝説的/レア/珍しい/共通を書くつもり列珍しい(VARCHAR)を追加するカードと呼ばれますか?
card -> id, name, class, type, rarity (VARCHAR), cost, attack, defense
または私は2つのテーブルを作成する必要があり珍しい(INT)でカードと呼ばれ、別のテーブルには、私はすべての希少性をリストアップし、私のカード表に自分のIDを使用希少と呼ばれますこのような ?
card -> id, name, class, type, rarity (INT), cost, attack, defense
rarity -> id, name
また、これらのオプションのいずれかは、多言語の目的に適しているのでしょうか、それとも基本的に同じですか? (私は前に自分で多言語ウェブサイトを作成したことがないので、それはばかな質問だ場合、私はごめんなさい)読書:)
したがって、追加のタブがあるにもかかわらず、あなたのソリューションは私がリストした2番目のものよりも速くなりますか? また、他の要因(クラス、生き物の種類など)があるため、1要因につき2つのテーブルが増えることになります。 – Tokipudi
@Tokipudiいいえ、最初のフラットな構造は速いです。正規化されたアプローチは、データの完全性の点で優れています。 [this](http://sqlmag.com/database-performance-tuning/sql-design-why-you-need-database-normalization)を参照してください。正規化されるための完全な理由 – JohnHC
この記事(および上の関連するもの)、たとえフラットが高速であっても、それは十分に「信頼できる」ものではなく、頻繁に使用すべきではありません。だから私はあなたが説明したように、感謝します。 – Tokipudi