質問するログイン新規登録

質問編集履歴

3

(追記)実現したい事のテーブル情報の追加

2021/02/08 14:32

投稿

yumi_1003
yumi_1003

スコア1

title CHANGED
File without changes
body CHANGED
@@ -120,4 +120,34 @@
120
120
 
121
121
  Ruby 6.0.0
122
122
  railsを使用しての実装です。
123
- DBはMySQLを使用しています。
123
+ DBはMySQLを使用しています。
124
+
125
+ ### 追記
126
+ 中間テーブルを使わない場合はこちらの実装を考えましたが、ご意見いただきたいです。
127
+ 他のテーブルは上記と同じもので考えていたので省略させていただきました。
128
+
129
+ ## menusテーブル
130
+
131
+ | Column | Type | Options |
132
+ | --------- | ---------- | ------------------------------ |
133
+ | title | string | null: false |
134
+ | recipe | text | null: false |
135
+ | hour_id | integer | null: false |
136
+ | price_id | integer | null: false |
137
+ | user | references | null: false, foreign_key: true |
138
+
139
+ ### Association
140
+ - belongs_to :user
141
+ - has_one :foodstuff
142
+
143
+ ## foodstuffsテーブル
144
+
145
+ | Column | Type | Options |
146
+ | -------------- | ---------- | ------------------------------ |
147
+ | foodstuff_name | string | null: false |
148
+ | quantity | string | null: false |
149
+ | serving | integer | null: false |
150
+ | menu | references | null: false, foreign_key: true |
151
+
152
+ ### Association
153
+ - belongs_to :menu

2

リンクの修正

2021/02/08 14:32

投稿

yumi_1003
yumi_1003

スコア1

title CHANGED
File without changes
body CHANGED
@@ -11,12 +11,10 @@
11
11
 
12
12
  ---
13
13
 
14
- 初期段階ではこのようなテーブル設計で実装していました。↓
15
- https://gyazo.com/6a9cacff2243195066bc33cd72cba65e
14
+ 初期段階では[こちらのよう](https://gyazo.com/6a9cacff2243195066bc33cd72cba65e)なテーブル設計で実装していました。
16
15
 
17
16
  しかし、一つのForm画面から、二つのテーブルに保存したいので、
18
- Formオブジェクトを使えば良いのでは?と考え、こちらの形に変更いたしました。↓
19
- https://gyazo.com/88c2c40bf6a6255715710906abde229a
17
+ Formオブジェクトを使えば良いのでは?と考え、[こちら](https://gyazo.com/88c2c40bf6a6255715710906abde229a)の形に変更いたしました。
20
18
 
21
19
  CREATE TABLE
22
20
  ---

1

投稿方法・記述の問題修正

2021/02/08 14:24

投稿

yumi_1003
yumi_1003

スコア1

title CHANGED
File without changes
body CHANGED
@@ -2,19 +2,112 @@
2
2
  初投稿・プログラミングを初めて2ヶ月のものです。
3
3
 
4
4
  DB設計において、中間テーブルを使うパターンとFormオブジェクトを使うパターンのどちらがプログラミングでは正しいのか、お詳しい方に助言をいただけたらと思います。
5
- レシピサイトのコピーサイトを作成しています。
6
5
 
7
- - menusテーブル ・・・ レシピの名前、作り方
8
- - foodstuffsテーブル ・・・ 材料、分量、何人前か
9
6
 
7
+ ###### レシピサイトを作成しています。
8
+
9
+ - **menusテーブル ・・・ レシピの名前、作り方**
10
+ - **foodstuffsテーブル ・・・ 材料、分量、何人前か**
11
+
12
+ ---
13
+
10
14
  初期段階ではこのようなテーブル設計で実装していました。↓
11
- ① https://gyazo.com/6a9cacff2243195066bc33cd72cba65e
15
+ https://gyazo.com/6a9cacff2243195066bc33cd72cba65e
12
16
 
13
17
  しかし、一つのForm画面から、二つのテーブルに保存したいので、
14
18
  Formオブジェクトを使えば良いのでは?と考え、こちらの形に変更いたしました。↓
15
- ② https://gyazo.com/88c2c40bf6a6255715710906abde229a
19
+ https://gyazo.com/88c2c40bf6a6255715710906abde229a
16
20
 
21
+ CREATE TABLE
22
+ ---
23
+ ## usersテーブル
24
+ | Column | Type | Options |
25
+ | ------------------ | ------- | ------------------------- |
26
+ | nickname | string | null: false |
27
+ | email | string | null: false, unique: true |
28
+ | encrypted_password | string | null: false |
17
29
 
30
+ ### Association
31
+ - has_many :menus
32
+ - has_many :comments
33
+
34
+ ## menusテーブル
35
+
36
+ | Column | Type | Options |
37
+ | --------- | ---------- | ------------------------------ |
38
+ | title | string | null: false |
39
+ | recipe | text | null: false |
40
+ | hour_id | integer | null: false |
41
+ | price_id | integer | null: false |
42
+ | user | references | null: false, foreign_key: true |
43
+
44
+ ### Association
45
+ - belongs_to :user
46
+ - has_one :foodstuff
47
+ - has_many :menu_tags
48
+ - has_many :tags, through: menu_tags
49
+ - has_many :comments
50
+
51
+ ## commentsテーブル
52
+
53
+ | Column | Type | Options |
54
+ | -------- | ---------- | ------------------------------ |
55
+ | comment | string | |
56
+ | user | references | null: false, foreign_key: true |
57
+ | menu | references | null: false, foreign_key: true |
58
+
59
+ ### Association
60
+ - belongs_to :user
61
+ - belongs_to :menu
62
+
63
+ ## foodstuffsテーブル
64
+
65
+ | Column | Type | Options |
66
+ | -------------- | ---------- | ------------------------------ |
67
+ | foodstuff_name | string | null: false |
68
+ | quantity | string | null: false |
69
+ | serving | integer | null: false |
70
+ | menu | references | null: false, foreign_key: true |
71
+
72
+ ### Association
73
+ - belongs_to :menu
74
+ - has_many :menus, through: foodstuff_menus
75
+ - has_many :foodstuff_menus
76
+
77
+ ## foodstuff_menusテーブル
78
+
79
+ | Column | Type | Options |
80
+ | ----------- | ---------- | ------------------------------ |
81
+ | foodstuff | references | null: false, foreign_key: true |
82
+ | menu | references | null: false, foreign_key: true |
83
+
84
+ ### Association
85
+ - belongs_to :foodstuff
86
+ - belongs_to :menu
87
+
88
+ ## menu_tag_relationsテーブル
89
+
90
+ | Column | Type | Options |
91
+ | -------- | ---------- | ------------------------------ |
92
+ | menu | references | null: false, foreign_key: true |
93
+ | tag | references | null: false, foreign_key: true |
94
+
95
+ ### Association
96
+ - belongs_to :menu
97
+ - belongs_to :tag
98
+
99
+ ## tagsテーブル
100
+
101
+ | Column | Type | Options |
102
+ | -------- | ------ | ----------- |
103
+ | name | string | null: false |
104
+
105
+ ### Association
106
+ - has_many :menu_tags
107
+ - has_many :tags, through: menu_tags
108
+
109
+ ---
110
+
18
111
  ### 考えたこと・調べたこと
19
112
 
20
113
  - そもそも中間テーブルを使うときは多対多の時とのことですが、menusテーブルに対して、foodstuffs(材料)のパターンは一つしかないので中間テーブルを設けることすらおかしいのではと思いましたが。。
@@ -28,4 +121,5 @@
28
121
  ### 補足情報
29
122
 
30
123
  Ruby 6.0.0
31
- railsを使用しての実装です。
124
+ railsを使用しての実装です。
125
+ DBはMySQLを使用しています。