2017-01-26 11 views
1

私はMYSQLを使用しているワードプレスユーザーのための文字を作成するために設計されたワードプレスプラグインに取り組んできました。私はPHPとSQLの新人です。私は現在、私のDBの2つのテーブルで苦労しています。クラステーブルとスキルテーブル。SQLロールプレイングゲーム - スキルテーブルを参照するクラステーブル

クラステーブルは、文字が可能な異なるクラスで構成されています。例えば;戦士、パラディンまたはウィザード。

スキルテーブルは、キャラクターが使用できるさまざまなスキルで構成されています。例えば;稲妻、殺し、または癒しをする。

これらのテーブルを互いに関連付ける必要があります。スキルのスキルの中から特定のスキルのみがクラステーブルのクラスで使用できます。たとえば、パラディンクラスはヒールスキルのみを選択でき、ウォリアークラスはスレイスキルしか使用できません。私はそれをうまく機能させるために何を使うべきか分かりません。

スキルテーブルで特定のスキルのみを参照できるようにすることができる条件があるかどうかはわかりません。誰かが私を正しい方向に向けることができますか?事前に助けてくれてありがとう!

+1

スキルを持つことができるクラスが1つだけの場合は、class_idをスキルテーブルのfkとして追加することができます。複数のクラスが同じスキルを持つことができる場合、class_id fkとskill_id fkを持つclass_skillテーブルが必要です。どのスキルがどのスキルを持つことができるかを設定するのに使用します。 – JimL

+1

"多対多"関係。これには、2つのテーブルをリンクする中間テーブルを作成する必要があります。ちょうどGoogleのSQLは、多くの例と多くの多くに来る必要があります。 – mba12

答えて

1

多対多の関係がここでトリックを行いますが、これは私がやることです。 私は3つのテーブル、1)文字2)スキル3)character_skillを作成し、ここに非常に単純な例です:

CREATE TABLE hero 
(
    id INT PRIMARY KEY AUTO_INCREMENT, 
    name VARCHAR(255) 
); 

CREATE TABLE skill 
(
    id INT PRIMARY KEY AUTO_INCREMENT, 
    name VARCHAR(255) 
) 

CREATE TABLE character_skill 
(
    id INT PRIMARY KEY AUTO_INCREMENT, 
    charachter_id INT, 
    skill_id INT, 
    CONSTRAINT character_skill_character_id_fk FOREIGN KEY (charachter_id) REFERENCES hero (id), 
    CONSTRAINT character_skill_skill_id_fk FOREIGN KEY (skill_id) REFERENCES skill (id) 
); 

今、あなたは、skillテーブルの上の英雄テーブル上の文字、およびスキルを格納します、主人公のIDとスキルのIDでcharacter_skillテーブルにレコードを追加するスキルを主人公(Character)に割り当てるにはここでトリックです。この例では、以前に他のテーブルで作成された文字やスキルだけを追加できるようにする制約を追加しました。

そして、それを照会し、私は同じcharachter IDを持っているcharacter_skillテーブル上のすべてのスキルを探します、liksので:

select 
    skill.name 
from skill 
INNER JOIN character_skill 
    on character_skill.skill_id = skill.id 
where character_skill.charachter_id = 3 

これは非常に単純な例です。

「文字」名前が予約されているので、これは、character_skillテーブルに接続されている唯一のスキルは、ID 3

  • 私は文字テーブルの名前のために英雄を使用して文字が使用することができる基本的な考え方であります
+0

私は理解していると信じています。だから、character_skillテーブルは基本的に特定のクラスが特定のスキルを選ぶことを制限する相互参照テーブルです。 –

+0

多かれ少なかれ多数の関係にあります。 –

+0

正しいですが、あなたはキャラクターとスキルをクロスリファレンスすることができます。あなたのために働くことを願っています;-) –

関連する問題