データベースについてほとんど知識のない者です。
「本の索引を兼ねた用語事典」を作るとします。
項目にある「何ページに記載」の情報は、
ある項目では1箇所だったり、ある項目では数百箇所だったりします。
このような可変個数のデータを収めるには、
どういう方法があるでしょうか?
コード化して、可変長文字列形式でデータベースに入れれば
実現できると思いますが、それもみっともない気がします。
また、そうすると「特定のページから記載項目を取り出す」
ことも難しくなります。
考えてみれば、レンタルビデオや電話会社の利用経歴など、
可変個数のデータを記録する処理は多くの場所で行われています。
そういう場合一般的にはどうしているのでしょうか?
あるいは、これらの処理はリレーショナルデータベースには
向いていないのでしょうか?
非常に初歩的な質問だと思うのですが、ご教示をお願いします。
また根本的な勘違いがあったらご指摘下さい。
No.2ベストアンサー
- 回答日時:
マスタテーブルと明細テーブルに分割すればよいかと。
たとえば、以下のような項目名と関連するページのデータ
があった場合を想定します。
上野, 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文で結合して取り出すことで、
目的のデータを抽出することができます。
No.3
- 回答日時:
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
No.1
- 回答日時:
正規化をします。
http://www.kogures.com/hitoshi/webtext/db-seikik …
>非常に初歩的な質問だと思うのですが、ご教示をお願いします。
>また根本的な勘違いがあったらご指摘下さい。
非常に重要なことですのでぜひしっかりと勉強してみてください。
参考URL:http://www.kogures.com/hitoshi/webtext/db-seikik …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
字面がカッコいい英単語
あなたが思う「字面がカッコいい英単語」を教えてください。
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
検索結果の列数を動的に変更したい
SQL Server
-
カラムが不定なデータベースの設計方法
MySQL
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Viewにインデックスは張れ...
-
INDEXの無効化
-
SQL*Loaderで、データを加工し...
-
【ANALYZE】 テーブル・インデ...
-
アナライズとインデックス作成...
-
テーブル設計時の注意点と理想...
-
ORA-00959: 表領域'****'は...
-
DELETE文でFROM句を省略した場合
-
postgreSQLのint型は桁数指定が...
-
異なるスキーマからデータを抽...
-
datapumpの実行方法について
-
Access レコードを追加できませ...
-
データを削除しても表領域の使...
-
viewのバックアップ
-
ACCESS 複数テーブル・複数フィ...
-
ExcelVBAにて外部データ(*.csv...
-
同じSELECT文同士でのデ...
-
RDBのテーブル種類の違い
-
大量データの取得処理について
-
テーブルからのselectにおいて...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Viewにインデックスは張れ...
-
INDEXの無効化
-
SQL*Loaderで、データを加工し...
-
アナライズとインデックス作成...
-
可変個数のデータはどう納める?
-
SQL*LoaderとInsertの違いについて
-
主キー以外の項目にNotNull制約...
-
【ANALYZE】 テーブル・インデ...
-
テスト環境と本番環境で、DBか...
-
統計情報について
-
索引の再構築をすべき?
-
文字列中のスペースを排除する...
-
ユニークインデックスについて
-
長年放置しているOracleを…なん...
-
IN 句ではインデックスが使用さ...
-
インデックス作成後アナライズ...
-
Wordで複数の索引を作りたい
-
OracleTextの索引再構築について
-
oracle10g統計情報取得の確認方法
-
データ表示順序
おすすめ情報