
お世話になります。
複数の工房(Labo)と 複数の職人(Craftsman) が多対多の関係で存在していて
特定の職人が作製した作品(Product)の管理をするデータベース設計を考えています。
職人が工房(Labo)を点々と代わってもその時に所属していた工房で作成した作品について
誰がいつどこの工房で作った作品かをわかるようにしたいと思います。
このような場合、どのようにデータベース設計をすれば設置や検索しやすくなるでしょうか?
(尚、工房や職人は、関わった作品に限定して、作品詳細情報を参照できるようにしたいと考えています。)
以下の様な、中間テーブルだけで対応可能でしょうか?
ご多忙のところ大変恐縮ですが、
履歴の持ち方の設計等についてご教示いただければ幸いです。
宜しくお願い致します。<(_ _)>
・Labosテーブル
-----------------
工房id labo_id UK
名称 labo_name
作成日時 created_at
更新日時 updated_at
・Craftsmansテーブル
-----------------
職人id craftsman_id UK
名称 craftsman_name
作成日時 created_at
更新日時 updated_at
・Productsテーブル
-----------------
製品id product_id UK
名称 product_name
職人id craftsman_id FK
工房id labo_id
作成日時 created_at
更新日時 updated_at
中間テーブルとして
・Craftsman_Labosテーブル
-----------------
id craftsman_labos_id UK
職人id craftsman_id FK
工房id labo_id FK
作成日時 created_at
・Craftsman_Products テーブル
-----------------
id craftsman_labos_id UK
職人id craftsman_id FK
製品id product_id FK
作成日時 created_at
No.2ベストアンサー
- 回答日時:
一つの製品が、「一人の職人、かつ、工房も一か所」で完結するのであれば、それで事足りると思います。
でも、着手日時とか完了日時はいらないのかな?
No.1
- 回答日時:
中間テーブル必要ですか?
あと、トランザクションテーブルが見当たりませんが。
製品が完成するまでの履歴テーブルを作成すればいいと思います。
そのテーブルに、工房と職人の情報を載せればいい。
着手開始日、終了日も必要か。
ご教示ありがとうございました。
職人が登録したら完結するので
中間テーブルを無くし トランザクションテーブルとして
Products テーブル を設置すればよいということですね。。
-----------------
製品id product_id UK
職人id craftsman_id FK
工房id labo_id FK
作成日時 created_at
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- 経営情報システム accessでの請求管理について 12 2022/06/11 16:20
- その他(データベース) accessについて 2 2022/05/31 16:58
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
- SQL Server ACCESSで表が作りたく、そのためのSQL文や設定方法を教えてください。 1 2022/08/15 12:28
- その他(プログラミング・Web制作) google formsを使ったタスク依頼フォーム作成におけるご相談 1 2023/06/22 15:55
- Access(アクセス) Accessの参照フィールドの列がずれてしまいます 1 2023/07/19 15:00
- Chrome(クローム) 入力フォームの履歴を消したい 2 2023/06/29 13:02
- Oracle sqlで質問です。 Aテーブルの情報をBテーブルに更新かけたいです。 やりたいことは、Bテーブルの受 1 2023/05/17 11:17
- Access(アクセス) テキストボックスの値をテーブルに入力したい 2 2022/06/28 12:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの関数について教えて...
-
エクセルで最後の文字だけ置き...
-
ある条件の最大値+1を初番する...
-
入力値と外部キーをINSERTするには
-
閉包テーブルのノードの移行に...
-
sqlで、600行あるテーブルを100...
-
フィールドに同じ値を入れるSQL...
-
テーブル名を省略して「h.id」...
-
[SQLServer] テーブル名からカ...
-
”photo id” とは何ぞや?
-
マイクラPC版のコマンドで効率...
-
SQLServerでのデータディクショ...
-
selectした大量データをinsert...
-
履歴情報のデータベース設計に...
-
小人の読み方は?
-
SQLサーバから、項目の属性(型...
-
DB設計について
-
所有格の意味
-
フィルターかけた後、重複を除...
-
Outlook 送受信エラー
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
エクセルの関数について教えて...
-
select文のwhere句に配列を入れ...
-
VIEWの元のテーブルのindexって...
-
エラー 1068 (42000): 複数の主...
-
SQLにて特定の文字を除いた検索...
-
【Transact-sql】 execの結果を...
-
マイクラPC版のコマンドで効率...
-
SQL Left Join で重複を排除す...
-
sqlで、600行あるテーブルを100...
-
複数テーブルのGROUP BY の使い...
-
WordpressのContact form 7でzi...
-
クエリ表示と、ADOで抽出したレ...
-
SQLサーバから、項目の属性(型...
-
selectした大量データをinsert...
-
Access パラメータクエリをcsv...
-
副問合せの書き方について
-
inner joinをすると数がおかし...
-
insertを高速化させたい
-
[MySQL] 3つのテーブルの結合で...
おすすめ情報
ご教示ありがとうございます。
多対多ということで中間テーブルが必要なのだと思っていました。
作品は職人が名前を登録することで完結するので
Productsテーブルをトランザクションテーブルとして扱うということですね。
以下でいかがでしょうか?
マスタテーブル--------------------------------
・Labosテーブル
・Craftsmansテーブル
トランザクションテーブル------------------
・Productsテーブル
製品id product_id UK
名称 product_name
職人id craftsman_id FK
工房id labo_id FK
登録日時 created_at
更新日時 updated_at