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

回答編集履歴

5

追記

2018/11/05 03:53

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -14,4 +14,29 @@
14
14
  --
15
15
  質問にある【商品マスタ】はサロゲートキーでの管理とはなっていない様に見えます。
16
16
  サロゲートキーを`ID`とすると、一般的なナチュラルキーは、`メーカーID+商品コード+言語ID`になると思われます。
17
- また、質問にある【商品マスタ】はm17nでの、表示する言語に対応するものに思え、別途、`メーカーID+商品コード`で管理される別テーブルが必要に思えます。
17
+ また、質問にある【商品マスタ】はm17nでの、表示する言語に対応するものに思え、別途、`メーカーID+商品コード`で管理される別テーブルが必要に思えます。
18
+
19
+ 追記2
20
+ --
21
+ ナチュラルキーとしては、**製品メーカー**とそのメーカーで管理される**商品コード**が良いと思います。
22
+ ```
23
+ 【商品マスタ】サロゲートキー:商品ID、ナチュラルキー:メーカーID+商品コード
24
+ id integer - 商品ID
25
+ maker_id integer - メーカーID
26
+ product_code --商品コード
27
+ price integer - 価格
28
+
29
+ 【商品言語別マスタ】サロゲートキー:ID、ナチュラルキー:商品ID+言語ID
30
+ id integer - ID
31
+ product_id integer - 商品ID
32
+ language_id integer - 言語ID
33
+ name varchar - 名称
34
+ spec varchar - 仕様
35
+ ```
36
+ ※過去の情報まで管理するようなシステムの場合は、履歴情報として日付をキーの一部にする事が多いですね。その場合に、その日付をサロゲートキーに含めるかどうかは悩ましいところですが。
37
+
38
+ > 商品マスタの外部キーである言語IDが代理キーだと、
39
+ > マスタ定義上紐付けて登録することが難しくなると感じていますが、どのように登録するのが良いでしょうか?
40
+
41
+ 画面でメンテナンスする要件があるとの事なので、プルダウンで選択などの方法や、チェックなどにも使用できるので、言語はマスタ化されていた方が良いでしょう。
42
+ 前提としてそのデータが既に存在するものを外部キーとするのですから、一緒に登録するという事を考えるものではありません。

4

推敲

2018/11/05 03:53

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -14,4 +14,4 @@
14
14
  --
15
15
  質問にある【商品マスタ】はサロゲートキーでの管理とはなっていない様に見えます。
16
16
  サロゲートキーを`ID`とすると、一般的なナチュラルキーは、`メーカーID+商品コード+言語ID`になると思われます。
17
- また、質問にある【商品マスタ】は表示する言語に対応するもの、別途、`メーカーID+商品コード`で管理される別テーブルが必要に思えます。
17
+ また、質問にある【商品マスタ】はm17nでの、表示する言語に対応するものに思え、別途、`メーカーID+商品コード`で管理される別テーブルが必要に思えます。

3

推敲

2018/11/05 02:20

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -12,6 +12,6 @@
12
12
 
13
13
  追記
14
14
  --
15
- 質問にある【商品マスタ】はサロゲートキーでの管理とはなっていように見えます。
15
+ 質問にある【商品マスタ】はサロゲートキーでの管理とはなっていに見えます。
16
16
  サロゲートキーを`ID`とすると、一般的なナチュラルキーは、`メーカーID+商品コード+言語ID`になると思われます。
17
17
  また、質問にある【商品マスタ】は表示する言語に対応するもので、別途、`メーカーID+商品コード`で管理される別テーブルが必要に思えます。

2

追記

2018/11/05 02:04

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -13,4 +13,5 @@
13
13
  追記
14
14
  --
15
15
  質問にある【商品マスタ】はサロゲートキーでの管理とはなってい無いように見えます。
16
- サロゲートキーを`ID`とすると、一般的なナチュラルキーは、`メーカーID+商品コード+言語ID`になると思われます。
16
+ サロゲートキーを`ID`とすると、一般的なナチュラルキーは、`メーカーID+商品コード+言語ID`になると思われます。
17
+ また、質問にある【商品マスタ】は表示する言語に対応するもので、別途、`メーカーID+商品コード`で管理される別テーブルが必要に思えます。

1

追記

2018/11/05 01:30

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -8,4 +8,9 @@
8
8
  備考やメモ的な扱いなら、別テーブルでの管理の必要はないでしょう。
9
9
 
10
10
  ただ、体系的に管理出来そうなものは、別テーブルでサロゲートキーでの管理とした方が、後々の拡張性はあります。
11
- ですが、管理しないよりは、作りこみにコストが掛かりますので、これも要件次第でしょう。
11
+ ですが、管理しないよりは、作りこみにコストが掛かりますので、これも要件次第でしょう。
12
+
13
+ 追記
14
+ --
15
+ 質問にある【商品マスタ】はサロゲートキーでの管理とはなってい無いように見えます。
16
+ サロゲートキーを`ID`とすると、一般的なナチュラルキーは、`メーカーID+商品コード+言語ID`になると思われます。