にこのできる限りを説明しようとする試みをリレーショナル表を作成:は、MySQL
開始するには、私はテーブルがvocabulary
呼ばれています:Excelシートで
+-----+---------------------+
| id | name |
+-----+---------------------+
| 1 | Farming |
| 2 | Agriculture |
| 3 | Design |
| 4 | Graphic Design |
| 5 | Interactive Design |
| 6 | Animal Husbandry |
| ... | ... |
| 887 | Carpentry |
+-----+---------------------+
、私は関連」のリストを持っています以下のように見えるかもしれません語彙:私は何をしたいか
Interactive Design Farming
-------------------- --------------------
Graphic Design Agriculture
Design Animal Husbandry
vocabulary_relations
と呼ばれるテーブルを作成し、ヘッダ間の関係を作成することです(上記Eでxcelシートの例)をその下のすべての項目に適用します。たとえば、インタラクティブデザインはグラフィックデザインとデザインを指します。農業は農業と畜産を指すだろう。
たとえば、テーブルが(参照としてvocabulary
テーブルを使用して)次のようになります。
+----------------+--------------+
| vocabulary_id | related_id |
+----------------+--------------+
| 5 | 4 |
| 5 | 2 |
| 1 | 2 |
| 1 | 6 |
+----------------+--------------+
そのように、私はどのvocabulary_id
のためのすべてのrelated_id
を引くことができます。
たとえば、私がvocabulary_id = 1
(耕作)を要求した場合は、それぞれrelated_id => 2, 6
(農業、畜産業)を返します。
このような方法を自動化する方法はありますか?私はユーザーインターフェイスを探していません、これは静的なデータです。
ありがとうございました!
「自動化」と言うとき、正確にはどういう意味ですか?私が読んだことから、あなたが望むものは、単純なSQL JOINによって実行できます(多対多の関係のためにすべてのテーブルをSQLに設定したと仮定し、3つの必要なテーブルのうち2つを示しています) 。あなたは上記のテーブルの更新を自動化する何かを探していますか? –
私はそのレベルで多対多または何かを作成するつもりはありません。データは静的であり、最初の提出後は決して変更されません。だから、私が探しているものを達成するために基本的な結合を使用するだけで問題はありません。しかし、私の問題は、データベース内の関係を得ることです。 Joe(下記)が有望に見えるものの、私がCSVでそれを使うことができるかどうかわからない。私は単純にSQLにCSVリストを分析し、それぞれのIDを見つけて、その関係を 'vocabulary_relations'テーブルに作成するだけです。 – stewart715
あなたのエクセルデータを先にピボットしてからエクスポートすると、そのサウンドから、あなたはもっと遠くにいる方が良いでしょう。 RDBMSデータを提供する場合は、一般的にリレーショナルデータが必要です。そうでなければ、どのエントリが「親」エントリであるかを知ることになります。 (ああ、私はあなたが5を4と3に関連させていると思っていましたが、2ではなく、正しいと思います) –