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

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

新規登録して質問してみよう
ただいま回答率
85.48%
SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

データベース設計

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

Q&A

解決済

4回答

4467閲覧

テーブルに外部キーが多いとLEFT JOINだらけになる

gorillam

総合スコア15

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

データベース設計

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

0グッド

1クリップ

投稿2019/03/11 07:25

テーブルに外部キーが多いとLEFT JOINだらけになるのは普通なんでしょうか。
例えば2つの性別しかない性別テーブル(コード:性別、0:不明、1:男性、2:女性)を使うと、外部結合で性別を表示してますが、テーブルが「~コード」などの外部キーだらけだとLEFT JOINばかりになってしまいます。こういう場合はCASEとか使うのでしょうか。
レコードが多ければテーブルにするのですが、上の性別や、~区分など、レコードが少ししかないマスタをどう扱うべきなのか分りません。
個々のケースによるとは思いますが、一般的に実際の業務ではどうされているのでしょうか。
回答いただけると嬉しいです。よろしくお願いします。

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

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

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

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

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

guest

回答4

0

性別までテーブルにするお客様に当たった記憶はありません。
SQLをシンプルにパフォーマンス良く実行できるように、データベースのテーブルはデータベースの正規化 に沿って設計します。通常、第3正規化まで行います。第1正規化で繰り返しを排除します。

差し支えない範囲で質問に関連するテーブルのCREATE TABLEと用途を追記されては?

投稿2019/03/11 07:36

Orlofsky

総合スコア16415

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

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

gorillam

2019/03/14 04:28

ご回答ありがとうございます。
guest

0

テーブルが「~コード」などの外部キーだらけだとLEFT JOINばかりになってしまいます。

テーブルの値を出力する直前まではコードをそのまま引き回して、別途でマスターの値をとってきて後からコードを表示名に変換する、というような方法も考えられます。

投稿2019/03/11 07:30

maisumakun

総合スコア145184

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

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

gorillam

2019/03/14 04:17

ご回答ありがとうございます。 表示の時だけマスターから取って来るようにします。
guest

0

ベストアンサー

テーブルに外部キーが多いとLEFT JOINだらけになるのは普通なんでしょうか。

外部キーにしているなら当然です。
ユーザーによって可変とならない不変なコード(例えば性別とか制御用のコードなど)はテーブル化する事は稀です。

DBMSによっては、SQL内で使用できる定数を定義出来るものもありますので、活用することもあります。

投稿2019/03/12 03:12

sazi

総合スコア25195

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

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

gorillam

2019/03/14 04:36

「~区分」などもわざわざテーブルにはしないんですね。 もう少し勉強してみます。 ご回答ありがとうございました。
guest

0

テーブルに外部キーが多いとLEFT JOINだらけになるのは普通なんでしょうか。

普通です。

一般的に実際の業務ではどうされているのでしょうか。

一般的には、Viewやストアドを駆使して短いクエリで取得できるようにしておくのが良いと思います。
わたしはアプリケーション側ではSQLを叩かず、フレームワークに吸収してもらってます。

投稿2019/03/11 07:51

hihijiji

総合スコア4150

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

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

gorillam

2019/03/14 04:33

ご回答ありがとうございます。 普通なんですね。外部結合だらけになっても気にしないで書いていきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問