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

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

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

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

SQL

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

データベース設計

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

データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

Q&A

解決済

4回答

1102閲覧

リレーションの組み方・データ設計がわかりません。

d0futa

総合スコア13

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

SQL

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

データベース設計

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

データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

2グッド

1クリップ

投稿2019/01/08 07:13

編集2019/01/08 08:06

前提・実現したいこと

以下の三つの主体があります。

  • プロジェクト
  • チーム
  • メンバー

そして、以下の要件を満たしたいです。

  • チームとメンバーは多対多の関係

  • チームとプロジェクトは多対多の関係

  • プロジェクトからチームを通してメンバーを取得する時、メンバーをそれぞれのジョブタイトルと一緒に表示させたい。

  • メンバーのジョブタイトルは、プロジェクトごとに変わる。

  • 一つのプロジェクトの中では、メンバーによってジョブタイトルは変わる。

発生している問題

このジョブタイトルがプロジェクトごとに変わるというデータ設計の仕方がわからないです。

以下のようなER図を書いたところで止まってしまいました。
イメージ説明
ER図

azuapricot, set0gut1👍を押しています

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

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

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

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

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

ssasaki

2019/01/08 07:17

とりあえずER図の画像が見れないようです。
d0futa

2019/01/08 07:20

コメントありがとうございます。更新しました。変わらないでしょうか?
ssasaki

2019/01/08 07:33

正常に見れるようになりました。
sazi

2019/01/08 07:56

> メンバーのジョブタイトルは、プロジェクトごとに変わる。 プロジェクトが決まればジョブタイトルは決まるという事で良い?
d0futa

2019/01/08 08:07

コメントありがとうございます。追記しました。 一つのプロジェクトの中で、メンバーによってジョブタイトルは変わります。なので、プロジェクトが決まっても各メンバーのジョブタイトルはまだ決まりません。
guest

回答4

0

プロジェクトとジョブというと、進捗などを表わすガントチャートで管理されるものが思い浮かびます。

その場合、ジョブというのは一つのエンティティです。
プロジェクトとジョブの組み合わせに、メンバー(※)が結び付くという関係でしょう。
※チームが結び付くというのも考えられますが、あくまでチームはメンバーを展開するための情報として利用すると考えた方が、複雑にならずに済みます。

質問のER図的に云うと、ジョブ(ここにジョブタイトル)とプロジェクト+ジョブ+メンバーのマップという構成になるかと思います。

※プロジェクト+ジョブというマップとそのマップとメンバーの組み合わせの方が楽かもしれない

投稿2019/01/08 09:36

編集2019/01/08 09:39
sazi

総合スコア25184

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

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

0

ベストアンサー

私の案をば

[チーム]-[メンバー]
の関係はそのままで良いと思います。(ただし中間テーブルはサロゲートキーを持たないことが多い)
これはマスターデータと考えていいでしょう。
[ジョブ]は微妙ですが、これもマスターデータと考えていいでしょう。
マスター側では[ジョブ]は紐づけません。

すると、トランザクションデータは多分こんな感じに紐づくと思います。。
[プロジェクト]-[ジョブ]-[メンバー]

最終的に
[チーム]-[メンバー]-[ジョブ]-[プロジェクト]
こんな感じでしょうか?

投稿2019/01/08 07:40

hihijiji

総合スコア4150

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

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

d0futa

2019/01/08 08:09

回答ありがとうございます! なるほど、チームとプロジェクトのリレーションを切り離すということでしょうか。 思いつきませんでした、、、とても参考になります。
guest

0

イメージ説明

ジョブタイトルについて説明が不足しているので考えてみましたがこんな感じが限界です

ジョブタイトルは1プロジェクトに1ジョブタイトルなのか、
その1プロジェクトの中でもユーザーによってジョブタイトルは変わるのかなど・・・


情報いただいたのでまた色々踏まえて考えた結果以下になりました

SQLのプロではないので参考程度にお願いします・・・。

質問がきっかけで良い勉強になってます。ありがとうございます。

イメージ説明

投稿2019/01/08 07:37

編集2019/01/08 08:58
azuapricot

総合スコア2341

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

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

d0futa

2019/01/08 08:05

回答ありがとうございます!とても参考になります。 情報足りず申し訳ありませんでした。 プロジェクトの中で、ユーザーによってジョブタイトルは変わります。
d0futa

2019/01/08 10:16

いえいえ、こちらこそご丁寧に回答いただいてとても感謝しております。 私が最初につくった状態から、ユーザーとプロジェクトの間に新たに中間テーブルを作成して、そこにジョブの情報を載せておくというイメージでしょうか。
guest

0

単純に projects_table に job_title を追加するだけではダメなのでしょうか?
job_title は1つのプロジェクトで複数種類存在するのでしょうか?

投稿2019/01/08 07:32

ssasaki

総合スコア1167

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

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

d0futa

2019/01/08 08:11

回答ありがとうございます! はい、一つのプロジェクトの中でメンバーごとにジョブタイトルは変わります。。 説明不足申し訳ありません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問