質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.36%
A5:SQL Mk-2

A5:SQL Mk-2は、フリーのSQL開発ツールです。高機能で軽量、且つ分かりやすいことを目指して開発されました。SQLの実行やテーブル編集などの機能に加え、簡単な操作によりDB定義書やER図を自動生成することも可能です。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

データベース設計

データベース設計はデータベースの論理的や物理的な部分を特定する工程です。

Q&A

解決済

2回答

456閲覧

【データベース設計】多対多のテーブルのリレーション

hitonarazu_

総合スコア1

A5:SQL Mk-2

A5:SQL Mk-2は、フリーのSQL開発ツールです。高機能で軽量、且つ分かりやすいことを目指して開発されました。SQLの実行やテーブル編集などの機能に加え、簡単な操作によりDB定義書やER図を自動生成することも可能です。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

データベース設計

データベース設計はデータベースの論理的や物理的な部分を特定する工程です。

0グッド

0クリップ

投稿2023/09/30 17:16

前提

初投稿の初心者です。
技術向上を兼ねて趣味でゲームのキャラクターのデータを比較できるシステムを作ろうと思い、まずはデータベース作成を行っています。

その中の多対多のテーブルの設計でどうすればよいかわからないところがあり助言をいただきたいです。

問題のテーブル設計

例として各キャラは複数の装備枠があり、各装備枠には装備できるものが決まっています。
以下のように複数種類の装備の選択も可能です。

キャラテーブル

キャラidキャラ名右手装備左手装備
1太郎長剣or槍
2次郎短剣短剣
3三郎長剣or弓矢

装備テーブル

装備id装備名
1長剣
2短剣
3弓矢
4
5

この場合どのように2つのテーブルのリレーションを組めばよいでしょうか?
装備枠に対して1種類しか対応する装備がなければ中間テーブルを作ればいいかと思いましたが、装備枠に対応する装備が複数あるのでこれを解消する手が思いつきませんでした。

幸いにして複数の装備を選択できてもそのパターンは多くないので装備テーブルに以下のように追加するのも手でしょうか?

装備テーブル改

装備id装備名
1長剣
5
6長剣or槍
7長剣or弓矢

現時点での構想としてはどのキャラがどの装備枠に何を装備できるかがわかればいいと思っています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

winterboum

2023/10/01 02:44

装備枠 ってどのデータのことでしょう
hitonarazu_

2023/10/01 15:43

例にあげてある表の右手装備と左手装備のことです。 それぞれで装備を選択することができ、対応する装備の種類が決まっています。 実際のデータでは3枠あるのですがわかりやすくするために右手と左手で2枠の装備枠という説明になってます。
guest

回答2

0

ベストアンサー

やりかたはいろいろありそうですが、キャラテーブルの「右手装備」「左手装備」に繰り返しが発生するのであれば、ここを別テーブルにするのはどうでしょうか?

キャラテーブル

キャラidキャラ名
1太郎
2次郎
3三郎

装備テーブル

装備id装備名
1長剣
2短剣
3弓矢
4
5

装備枠テーブル

キャラid種別装備id
1 (太郎)右手装備1 (長剣)
1 (太郎)右手装備4 (槍)
2 (次郎)右手装備2 (短剣)
3 (三郎)右手装備1 (長剣)
3 (三郎)右手装備3 (弓矢)
1 (太郎)左手装備5 (盾)
2 (次郎)左手装備2 (短剣)
3 (三郎)左手装備5 (盾)

投稿2023/09/30 17:58

neko_the_shadow

総合スコア2347

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hitonarazu_

2023/10/03 12:20

回答ありがとうございます。イメージつきましたのでこの方向で設計を進めていきたいと思います。
guest

0

たとえば

  • やりや大剣を持ったときは左手には装備ができない(両手武器)
  • 徒手・暗器が切り替わる
  • 左利きどうする?

などもろもろ例外もあるので、条件次第ですね
左右組み合わせ単位で設定した方がよいかも

またファンタジーだと

  • 3刀流
  • 手が3本以上ある

的な処理が想定されるなら予めそういう設計をする必要があります

投稿2023/10/02 03:32

yambejp

総合スコア116644

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問