- 締切済み
正規化の仕方がわからず困ってます!助けて下さい。
授業のレポートで郷土料理のデータベースを作っています。正規化をしてみたのですが、合っているのが分かりません。 本を見ながら自分なりに下のようにやってみました。 (1)非正規形 (材料、道具、行事名は複数あるため、材料ID、道具ID、行事ID以下それぞれ繰り返し) 料理ID・料理分類ID・料理分類名・料理名・料理名注解・調理方法・情報源・食べ方・料理に関する情報源・地域・写真の有無・補足情報・材料ID・材料名・旬の時期・栄養価・材料の入手方法(現在)・材料の入手方法(昭和中期~後期)・材料の入手方法(明治~昭和初期)・道具ID・道具名・行事ID・行事名・行事名注解・行事内容・地域・行事に関する情報源 (2)第一正規形 繰り返しをしている部分を分割しました。 ■料理テーブル 料理ID・料理分類ID・料理分類名・料理名・料理名注解・調理方法・どのような時に食べるか・料理に関する情報源・地域・写真の有無・補足情報 ■材料テーブル 料理ID・材料ID・材料名・旬の時期・栄養価・材料の入手方法(現在)・材料の入手方法(昭和中期~後期)・材料の入手方法(明治~昭和初期) ■道具テーブル 料理ID・道具ID・道具名 ■行事テーブル 料理ID・行事ID・行事名・行事名注解・行事内容・地域・行事に関する情報源 (3)第二正規形 部分キーにのみ従属するフィールドを分離しました。 ■材料_材料関連テーブル 料理ID・材料ID ■材料詳細テーブル 材料ID・材料名・旬の時期・栄養価・材料の入手方法(現在)・材料の入手方法(昭和中期~後期)・材料の入手方法(明治~昭和初期) ■道具_料理関連テーブル 料理ID・道具ID ■道具名テーブル 道具ID・道具名 ■行事_料理関連テーブル 料理ID・行事ID ■行事詳細テーブル 行事ID・行事名・行事名注解・行事内容・地域・行事に関する情報源 (4)第三正規形 主キー以外のフィールドに従属するフィールを分離しました。 ■料理テーブル 料理ID・料理分類ID・料理名ID・調理方法・どのような時に食べるか・情報源・地域・写真の有無・補足情報 ■料理分類テーブル 料理分類ID・料理分類名 ■料理名テーブル *ここで料理名IDを付けました。 料理名ID・料理名・料理名注解 ■行事詳細テーブル 行事ID・行事名ID・行事内容・地域・情報源 ■行事名テーブル 行事名ID・行事名・行事名注解 *ここで行事名IDを付けました。 これで合っているのでしょか??全く自信が無いです。 どう考えても料理テーブルがごちゃごちゃしています。 どのように整理したらよいか教えてください。よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- jamshid6
- ベストアンサー率88% (591/669)
思うに第二正規化+料理分類テーブルを分けた時点で、第三正規形にはなっています。 料理名注解や行事名注解が料理ID、行事IDに対して推移的関数従属になっていると考える必要はないと思うからです。 私としてはそこよりも各項目の性質をもう少しチェックしてみてはと思います。 ・情報源に「地元の人に対するヒアリング」とか「出雲風土記」などと入るのであれば、3つある情報源項目に共通で入る可能性が高いので、情報源テーブルがあってもいいのかなと思います。 ・入手方法は同じ内容が材料、時期にまたがって登録される可能性は結構あるのでは?あるなら切り離して入手方法テーブルを作る手もありそうです。 ・地域も同様です。あとから例えば「長野県」で検索したいなどと考えるとすれば、複数の県にまたがる場合は「長野県」「伊那地方」「松本」などとバラバラに入力するのではなく、地域テーブル(地域ID、地域名、都道府県名)などを用意して、場合によっては複数割り当てた方がよいでしょうし。 ・旬の時期とかもそうかもしれませんね。 ・写真の有無についても、普通はある場合は写真の場所または写真そのものを管理する必要がありますね。 ・正規化理論とは直接関係ないですが「必須入力でない項目や文章を収録するような長い項目を分離する」というような検索効率や更新頻度に基づいて分割することもあります(料理テーブルがごちゃごちゃしていると感じるのもその辺が理由かもしれません)。 その場合は料理テーブルのサブテーブルを作ってそこに料理名注解、調理方法、食べ方、補足情報を切り出せばよいと思います。
お礼
回答ありがとうございます!!とても勉強になりました。料理名注解や行事名注解が料理ID、行事IDに数位的関数従属しているよ考えなくてよいのですね。この辺が曖昧だったのですっきりしました。 アドバイスして頂いた通り、各項目の性質をチェックしてからもう一度構成し直してみたいと思います。情報源テーブル、入手方法テーブルなど増やしていきたいと思います。 サブテーブルを作る・・なるほど!そのような考え方もあるのですね。目から鱗です。参考にさせて頂きます。ご指摘して頂いた通り、長い文章の項目があったりと、その辺りがごちゃごちゃとしていると感じた理由のようです。 本を読んでいるとこうじゃないといけない、と窮屈に感じていたのですが、アドバイスを頂いて視界が広がった気がします。貴重なアドバイスをして頂き本当にありがとうございました。