お世話になります。
この度、自身初めてLaravelを使用してWEBシステムを構築しております。
Laravelでは、DBのキー項目は常にシーケンスで自動採番するサロゲートキーの使用が推奨されているため、
初めてサロゲートキーを用いたDBを構築しております。
そのなかで、通常の複合キーを用いて正規化する設計と考え方が異なると感じている部分が多々あり、
どのような構成がベストなのかわからず疑問がでてきました。
サロゲートキーでのDB設計、多言語対応(i18n/l10n)の経験がある方のご意見をお聞かせ願います。
(また、このような悩みを解決できるようなDB設計の技術書があればぜひ教えてください!)
以下が悩みのもととなったER設計です。
ER
1【言語マスタ】 2id integer - ID 3name varchar - 名称 4 5【商品マスタ】 6id integer - ID 7language_id integer - 言語ID 8name varchar - 名称 9spec varchar - 仕様 10price integer - 価格 11maker_id integer - メーカーID 12 13【メーカーマスタ】 14id integer - ID 15name varchar - 名称 16 17・言語についてはブラウザのLocaleで初期設定、その後画面から選択できるような仕様をイメージしています 18・価格情報について、DB上は日本円の情報のみ保持します
①マスタでもサロゲートキー?
マスタのキーをサロゲートキーで持つ必要性はあるのでしょうか?
また、上記の例でいうと、商品マスタの外部キーである言語IDが代理キーだと、
マスタ定義上紐付けて登録することが難しくなると感じていますが、どのように登録するのが良いでしょうか?
②言語に依存しない項目は別テーブル化するべき?
上記の例でいうと、商品マスタの価格やメーカーIDがこれにあたりますが、これらの項目は別テーブルで管理した方が良いのでしょうか?
回答1件
あなたの回答
tips
プレビュー