プロが教えるわが家の防犯対策術!

データベースについてほとんど知識のない者です。

「本の索引を兼ねた用語事典」を作るとします。
項目にある「何ページに記載」の情報は、
ある項目では1箇所だったり、ある項目では数百箇所だったりします。
このような可変個数のデータを収めるには、
どういう方法があるでしょうか?

コード化して、可変長文字列形式でデータベースに入れれば
実現できると思いますが、それもみっともない気がします。
また、そうすると「特定のページから記載項目を取り出す」
ことも難しくなります。

考えてみれば、レンタルビデオや電話会社の利用経歴など、
可変個数のデータを記録する処理は多くの場所で行われています。
そういう場合一般的にはどうしているのでしょうか?
あるいは、これらの処理はリレーショナルデータベースには
向いていないのでしょうか?

非常に初歩的な質問だと思うのですが、ご教示をお願いします。
また根本的な勘違いがあったらご指摘下さい。

A 回答 (3件)

正規化をします。


http://www.kogures.com/hitoshi/webtext/db-seikik …

>非常に初歩的な質問だと思うのですが、ご教示をお願いします。
>また根本的な勘違いがあったらご指摘下さい。

非常に重要なことですのでぜひしっかりと勉強してみてください。

参考URL:http://www.kogures.com/hitoshi/webtext/db-seikik …
    • good
    • 1
この回答へのお礼

ありがとうございます。
やっぱりごく基礎的なことで躓いていたのがわかりました。
参考URLも見て勉強します。

お礼日時:2004/06/24 19:26

マスタテーブルと明細テーブルに分割すればよいかと。



たとえば、以下のような項目名と関連するページのデータ
があった場合を想定します。

上野, 2, 4, 100, 502
秋葉原, 5, 52
東京, 1, 10, 77, 304, 1000, 1020



このように項目によって、データの個数が変化している場合、
可変長項目が設定可能なオフコン系のRDBを除きますが、
テーブルを分割し、共通のコードでリンクするようにします。
以下に、その例を記述します。

<索引マスタ>
1.索引コード 文字型
2.索引名   文字型

<索引明細>
1.索引コード 文字型
2.明細番号  数値型
3.格納ページ 数値型


※データの格納状況

<索引マスタ>
0001, 上野
0002, 秋葉原
0003, 東京

<索引明細>
0001, 2
0001, 4
0001, 100
0001, 502
0002, 5
0002, 52
0003, 1
0003, 10
0003, 77
0003, 304
0003, 1000
0003, 1020


この二つのテーブルを、Select文で結合して取り出すことで、
目的のデータを抽出することができます。
    • good
    • 1
この回答へのお礼

ありがとうございます。
例を出して頂いて、参考になりました。

お礼日時:2004/06/24 19:27

No.2の回答の修正です。


テーブルのデータの格納に誤りがありました。

※データの格納状況

<索引マスタ>
0001, 上野
0002, 秋葉原
0003, 東京

<索引明細>
0001, 1, 2
0001, 2, 4
0001, 3, 100
0001, 4, 502
0002, 1, 5
0002, 2, 52
0003, 1, 1
0003, 2, 10
0003, 3, 77
0003, 4, 304
0003, 5, 1000
0003, 6, 1020
    • good
    • 2

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す