![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
データベースについてほとんど知識のない者です。
「本の索引を兼ねた用語事典」を作るとします。
項目にある「何ページに記載」の情報は、
ある項目では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で質問しましょう!
似たような質問が見つかりました
- フリーソフト 色々な形式の個人情報を後で参照しやすいようWindow10で管理したいのですが、どんな方法があるの? 1 2023/04/29 16:46
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- Visual Basic(VBA) 【VBA】データを入力後に,同一シート内に履歴として転記するVBAコードを教えていただきたいです。 3 2022/11/16 01:37
- Excel(エクセル) 表示形式、文字列セル(列)に数式を入力するには マクロ 1 2022/09/18 10:53
- 戸籍・住民票・身分証明書 バイトすることになって、住民票記載事項証明書を持ってきてと言われました。 2 2022/11/26 16:28
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- Visual Basic(VBA) VBAで、1つのエクセルで、2つのシートからもう1つのシートに条件のある転記コードを教えてください。 1 2023/03/16 18:07
- その他(セキュリティ) 匿名チャットアプリでの知られたくない会話 個人情報について 1 2023/03/29 18:08
- ハッキング・フィッシング詐欺 スマホアプリのトラッキング 個人情報について 5 2023/03/31 08:16
- その他(セキュリティ) 匿名チャットアプリ トラッキング 個人情報について 1 2023/03/29 20:35
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Viewにインデックスは張れ...
-
INDEXの無効化
-
SQL*Loaderで、データを加工し...
-
SQLのIN句について
-
SQL*LOADER実行時の...
-
表領域のパーティション分割時...
-
データ表示順序
-
可変個数のデータはどう納める?
-
目的のインデックスが使用され...
-
統計情報について
-
blevel=3のデータ作成
-
SPLIT PARTITON後のインデックス
-
SQLの速度を調べるには…
-
【ANALYZE】 テーブル・インデ...
-
ユニークインデックスについて
-
アナライズとインデックス作成...
-
インデックス作成後アナライズ...
-
oracle10g統計情報取得の確認方法
-
異なるスキーマからデータを抽...
-
データを削除しても表領域の使...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Viewにインデックスは張れ...
-
INDEXの無効化
-
SQL*Loaderで、データを加工し...
-
可変個数のデータはどう納める?
-
アナライズとインデックス作成...
-
主キー以外の項目にNotNull制約...
-
論理読み込みブロック数とは?
-
テスト環境と本番環境で、DBか...
-
文字列中のスペースを排除する...
-
インデックス作成後アナライズ...
-
索引の再構築をすべき?
-
Wordで複数の索引を作りたい
-
Oracle Databaseのインデックス...
-
統計情報について
-
SQLのIN句について
-
SQL*LoaderとInsertの違いについて
-
OracleTextの索引再構築について
-
目的のインデックスが使用され...
-
blevel=3のデータ作成
-
オラクル クラサバ環境で動作...
おすすめ情報