sql >> データベース >  >> RDS >> Mysql

単純なMySQLデータベース設計に関するヒントが必要

    なぜattributeがあるのですか テーブル

    属性は列であり、テーブルではありません。

    ウェブサイトのリンクからは何もわかりません。

    データベースの全体的な考え方は、クエリごとに必要に応じて多くの小さなテーブルを結合することです。そのため、それに慣れる必要があります。確かに、それはあなたにグリッドを与えますが、ヌルのない短くて甘いものです。あなたがやろうとしていることは、テーブルを避けることです。ヌルでいっぱいの巨大なグリッドを1つだけ使用します。

    (スニップ)

    属性名(列名)の前にテーブル名を付けないでください。これは冗長です。これは、複数のテーブルを使用するSQLの記述を開始するときに明らかになります。次に、テーブル名またはエイリアスを使用して、あいまいな列名のプレフィックスを付けることができます。

    例外はPKで、これは完全にレンダリングされ、FKである場合は常にその形式で使用されます。

    サイトを閲覧し、SQLに関するいくつかの質問を読んでください。

    それを行った後、後で、strengthが必要かどうかを考えることができます およびdefense typeの属性(列)になります;か否か。など。

    コメントへの回答30Nov10


    すばらしい、あなたはあなたのデータを理解しています。右。これで、属性テーブルがあった理由がわかりました。

    1. これらの10の例が代表的なものであることを確認してください、私はそれらを注意深く見ています。

      • タイプ:ジェム名:エンバーズパークペンダント...または、NeckMiscellaneousはタイプですか?
      • Uniqueは本当のItemTypeですか?私はそうではないと思います
      • Action.Display「シーズンオーガナイザーに戻ってください」
      • AttackPowerの属性はどこにありますか およびHitRating
    2. 私の製品クラスターの例では、(35,000の)さまざまな種類のアイテムがいくつありますか。その質問を述べる別の方法は、バリエーションがいくつあるかということです。つまり、意味のあることに、3500アイテム÷8属性ではありませんか?

    3. item_attributesはなしで変更されますか s / wのリリース(例:新しいInner Strength 属性) ?

    4. アイテムごとに、どの属性が繰り返されているか(複数)。これまでのところ、アクションのみが表示されていますか?

    5. これはゲームなので、タイトで非常に高速な、おそらく完全にメモリに常駐するデータベースが必要です。ヌルはありません。 VARはありません。最短のデータ型。何も複製しないでください(繰り返さないでください)。ビット(ブール値)とベクトルに満足していますか?

    6. これらの正規表現をSQLに簡単に変換する必要がありますか、それともそれぞれの深刻な皮肉に満足していますか(つまり、SQLで動作させると、かなり安定し、バグを見つけない限り、それを台無しにすることはありません) )(皮肉なし、深刻な質問)?

      6.1または、その逆かもしれません。dbはディスクに常駐しています。一度メモリにロードします。ゲームプレイ中にその上で正規表現を実行します。時々ディスクに書き込みます。したがって、正規表現をSQLに変換する必要はありませんか?

    これが私が向かっているところのデータモデルですが、これはまったく確実ではありません。それはあなたの答えによって調整されます。明確にするために:

    • 6番目の通常の形式は行は主キーと最大で1つの属性で構成されます。

    • 私は(6)ではなく(6.1)を描画しました。これは、あなたのデータが、純粋な6NFリレーショナルデータベースが必要であるという私の信念を補強するためです。

    • 私の製品クラスターデータモデル 、EAVよりも優れた例は、6NFであり、DataTypeによって再度正規化され(正規形の意味ではありません)、すでに見たテーブルの数を減らします。 (EAVの人々は通常、1つまたはいくつかの巨大なテーブルに行きます。)

    • これはストレート5NFで、6NFの右側に2つのテーブルしかありません。

    ゲームデータモデルへのリンク

    IDEF1X表記へのリンク リレーショナルモデリング標準に慣れていない人のために。

    編集への回答#2 05 Dec 10

    1.1。了解しました。

    1.2。その場合、IsUniqueはアイテムのインジケーター(ブール値)です。

    1.3。アクション。理解します。では、どこに保存しますか?

    1.4。 NeckMiscellaneousは、アイテムがNeckの両方のカテゴリにあることを意味します およびMisc つまり、2つの別々のItem.Name=Emberspark Pendant 、それぞれ異なるカテゴリがあります。


    2。および5.したがって、高速で高速なメモリ常駐データベースが必要です。だからこそ、私はあなたをGridLandからRelationalLandへと一線を越えて連れて行こうとしているのです。

    3。わかりました。第5正規形のままで、6NFや製品クラスター(データ型ごとのテーブル)は必要ありません。これまでのところ、Values すべて整数です。

    4。さらに見ることができます:LevelRequiredLevelIsUniqueBindsPickedUpBindsEquipped

    5。ビットはブール値です{0| 1}。 (リレーショナル)投影にはベクトルが必要です。後で連絡します。

    6。わかりました、あなたは説明しました、あなたは正規表現をSQLに翻訳していません。 (Slogはハードレイバーを意味します)。
    7。 Category.ParentIdとは何ですか?親カテゴリ ?

    8。 Attribute.GeneratedId?

    データモデル(更新)を評価してください。あなたが持っているものに加えて、私はさらにいくつかの列を持っています。データモデルにわからないことがあれば、具体的な質問をしてください。記法文書を読みましたよね?

    Actionがあります テーブルとして、ItemAction Valueを保持する :
    Equip: increase attack power by 28 Action.Nameです =Increase attack power by およびItemAction.Value =28。



    1. Rails、PostgreSQL、および履歴トリガー

    2. SQLServerで主キーを持つすべてのテーブルを返す7つの方法

    3. SQL select max(date)および対応する値

    4. MySQL:ストアドプロシージャで複数のフィールドを複数の変数に選択する