• ベストアンサー

データベースの正規化のところで質問があります。

データベースの正規化のところで質問があります。 会員とビデオがエンティティの例なんですが、 「レンタルビデオ店で会員が1度に複数のビデオを借りた場合、ビデオの情報が繰り返し項目になる」という説明が分かりません。 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • mitoneko
  • ベストアンサー率58% (469/798)
回答No.2

 仮に、会員情報も、貸し出し情報も全部一つのテーブルで登録するとします。  必要な項目は・・・  会員番号・氏名・住所・電話番号(他、個人情報。)  貸し出したビデオのタイトル(又は、ビデオIDコード)・貸出日・返却期限  といったところでしょうか。  さて、このテーブルの一行(一レコード)は、一人一行となるでしょう。  レンタルビデオ店は、大概複数のビデオが借りられますね。と一人で2本3本と借りていく人がいますし、何本貸すことになるかも解りませんね。人によっては一本だし、他の人は5本くらいかも・・・  では、一行に、何本になるか解らないビデオIDや貸出日・返却期限を登録するには、どうしましょうか? ビデオID1・ビデオID2・ビデオID3・・・とフィールドを並べるのが一番に思いつく方法です。  これを繰り返し項目と言います。  ところで、フィールドはいくつ並べたらいいのでしょうか?今、店の規則で一人5本までとしているから、5つ?もし、隣接店との競争の関係で一人10本に改訂されたら、どうします?とっても拡張性に問題がありますね。これが繰り返し項目を嫌う理由の一つです。もう一つは、データの検索や集計がすごく面倒になります。(SQLに話が進まないと今は理解できないかもしれません。)  別の解としては、一人一行を放棄して、ビデオテープ毎に一行を作る方法もあるでしょうが、そうすると、今度は、同じ人の住所や電話番号を山ほど登録する羽目になります。  会員さんが引っ越しをして住所が変わったら、いったいいくつのレコードを更新することになるのでしょうね。ぞっとする話であることだけは確かです。  どちらも、データベースの設計では避けるべきとされる事項です。これを考えるための方法論の一つが正規化です。  この物語の次の作業は、会員情報テーブルと、貸し出しテーブルの二つのテーブルに分離して(更にビデオ情報が要るから、3つかな?)・・・と続くのでしょうが、その辺はもう一度続きを読んで見てくださいね。 

その他の回答 (1)

回答No.1

レコードを増やすという事です。RDBでは、その「ビデオの情報」で別テーブルを作りなさい。 となりますね。ID(シーケンス番号)は設計によりますが、1回のレンタルで一つのテーブル、そこに「ビデオの情報」のIDを入れることになりますね。 その逆でも可能ですが。

関連するQ&A

  • データベースでの質問です。

    データベースの正規化で第一正規化、第二正規化、第三正規化 がありますが 「第一正規化」では、データの重複をなくす事をする 「第二正規化」では関数従属をおこないxの値が決まればyの値が決まるのと同じように あるキーが決まれば、他のキーも決まるようになること 「第三正規化」では関数従属をなくすと聞いたんですが、意味がわかりません 解釈としてはキー項目を2つ組み合わせてある項目を決めると解釈であってるでしょうか?? 第一正規化と第二正規化はこの解釈でいいでしょうか?? バカな質問ですいません データベースの正規化の理解に苦しんでいます 回答おねがいします。

  • 第3正規化とは何でしょうか

    データベースの第三正規化がよく分かりません。 第二正規化との違いがよく分かりません。 第2→主キーの一部に従属する項目を分離 第3→主キーに従属しない項目を分離 という説明があったり (このテキストでは、主キーを常に複合キーとしているようであり、その複合キーの(2つとして)どちらかを主キーとする表をつくるのが2で、その複合キーのどちらとも関係しない列を主キーとする表を3としているようなのですが、そもそも主キーは複合キーとは限らないはずだと思うのですが・・) 別のテキストでは(ある基本情報技術者試験のテキスト) 第2→関数従属 第3→推移的関数従属 という説明があったりします(推移的関数従属というのをネットで調べてみましたが、その概念がここでどう当てはまるのか分かりません) このへん教えていただけませんでしょうか? あるいは、分かりやすくある程度体系的に教えているページや本があれば教えてください。

  • データベース情報無損失分解、第四正規形について

    データベースの学習をしています。 以下の語を説明する文章がそれぞれどれかわかりません。 用語 (1)情報無損失分解 (2)第四正規形 (a)リレーションスキーマリレーション中の結合従属性(X1, X2, ...., Xn)が自明な結合従属性であるか、各XiがRのスーパーキーである場合に成り立つ (b)リレーションスキーマR中の多値従属性X→Yが自明な多値従属性であるか、XがRのスーパーキーである場合に成り立つ

  • 「データベース」の意味について

    本当に単純な質問なのですが,考えているうちに分からなくなってしまいましたので,質問させていただきます. 「データベース」の意味についてはWikipediaなどでも出ているので理解はできるのですが以下の場合はデータベースというのでしょうか? 1. 収集するデータの項目を決めて,Microsoft AccessでTableを作ったがデータは入っていない. 2. 収集するデータの項目を決めて,Microsoft Excelで1行目に項目名を入力したがデータは入っていない. 上記の場合データが入っていない箱を作ったことになりますが,それでも「データベースを作った」と言えるのか?ということです. また,箱を作った人とデータを入れる人が別の場合は,「データベースを作った」人はどちらになるのでしょうか? よろしくお願いいたします。

  • データベース暗号化について教えて下さい。

    データベース暗号化について教えて下さい。 データベースの項目暗号化について下記事項等々に付き調査中です。 宜しくお願いします。 現状の暗号化方向(考え方)  1)個人情報および特定情報項目の暗号化を考えている。  2)データベースはOracle10g以降で検討中。(予定)  3)現行DB2からのデータ移行は必要。(予定)  4)SQL*PLUS、コマンドフロンプト等の開発環境では暗号化なしで使用したい。   (ユーザ/パスワードで暗号化ON/OFFなどの設定/利用としたい)  5)ネットワーク上はSSL通信などを検討中。 現状の懸念事項  DBをOracle10g。Oracleツールで対応を考えるが次の事項懸念あり。  1)Oracleツールを利用する事で暗号化として十分か?  2)Oracleツール利用の場合、インタフェースを二重化し、   利用者(AP開発者、)にOracleツールを見せないことを想定するが一般的にそこまでするのか? 確認ポイント  1)上記、懸念事項について御回答頂き度。  2)項目暗号化の推奨方法について   a.一般的なDB暗号化方式を教えて下さい。(複数方式。比較検討のため)   b.項目暗号化の方法について教えて下さい。(複数方法。比較検討のため)   c.Oracle社正式ツールあれば教えて下さい。(有償?無償?有償はいくら?)      d.その他。暗号化に関する弊害内容、留意事項、事故例等々。

  • データベース利用について

    ご質問をさせて下さい。 商用にてデータベースを利用予定なのですが、 ネット上で大量の顧客情報を管理し、尚且つその情報を必要としている企業が そのデータベースにアクセスできるようなシステムを作りたいと思っています。 しかし元々専門知識が全くないので、 どの程度の規模のデータベースを用意すればいいのかが分かりません。 また、サーバーとデータベースの関係も良く分かりません。 例えばオラクルはデータベースソフトというのは分かるのですが、 そのソフトを使って大量のデータを管理するとしても、 その大量のデータ自体はサーバーにあることになりますよね? ではそのサーバーは自前で用意するしかないのでしょうか? もしくはレンタルサーバーで大丈夫なのでしょうか? またホームページのレンタルサーバー(もちろん法人用)を提供している ところなどでは、そういうのは難しいのでしょうか? 要はレンタルサーバーなどがあるというのは分かるのですが、 どの程度の規模のものまで可能なのかとか、 大手はどこなのかとかが分からなくてイメージが掴めません。 尚、規模としては最初は小規模なものですが、 将来的には上限のない、なるべく多くの顧客情報管理を目指す予定です。 と、基本的なご質問で大変申し訳ないのですが、 ヒントになるようなことだけでも構いませんので、 アドバイスを頂けますでしょうか。

  • 個々にデータベース作成?

    よろしくお願いします。 movabletypeでblogを作成していますが、 複数設置する場合は、個々にMySqlのデータベースを作成する必要がありますか? 現在、レンタルサーバーで運用中で、MySQLは2個までと制限があります。3つ目を作成したいのですが、同じデータベース上に設置しても問題ないのでしょうか?

    • ベストアンサー
    • MySQL
  • ウェブサイトとデータベースを連動させるには

    友人のカーディーラーからウェブサイトのデザインを頼まれました。 複数の画像が表示させられる形式で、車種年式メーカーなど10項目ほど車の情報を画像の脇にのせたいとのことです。 友人は車の情報をデーターベースで管理し、こっちの情報を更新すると、 ウェブサイトの情報も更新させるようにしたいといいます。 このようにウェブサイトとデータベースを連動させるにはどうしたらよいでしょうか? エクセルだと画像の管理ができないので、画像管理できるデータベースソフト(ウェブと連動できるもの)も教えて頂けると大変助かります。

  • Accessデータベース

    Accessで過去の天気をデータベース化したのですが、 年、月、日付などを選択して検索できるよう何かできないでしょうか? データベースの内容としては 日付、9時、12時、15時、最高気温、最低気温の6項目です。 9時、12時、15時の情報としてはその時間帯の天気情報が書かれています。(例.晴れ、くもり、雨、雪、雷)

  • どうやってデータベースサーバをイントラネットにおくのでしょうか

    postgreSQLとPHPで出来る事をウェブページで色々とやってみたいのですが、データベースをレンタルサーバ上に置くのは怖いのでやりたくないのです。この場合はどうすれば良いのでしょうか。イントラネット上でウェブサーバというかデータベースサーバを用意しないといけないのでしょうか? また、レンタルサーバ上にデータベース情報を置くのはセキュリティ上危険だと思うのですが、実際はそうでもないのでしょうか? 大手のウェブサイトでは通常このような時、どのような環境で制作しているのでしょうか?