データベースについてほとんど知識のない者です。
「本の索引を兼ねた用語事典」を作るとします。
項目にある「何ページに記載」の情報は、
ある項目では1箇所だったり、ある項目では数百箇所だったりします。
このような可変個数のデータを収めるには、
どういう方法があるでしょうか?
コード化して、可変長文字列形式でデータベースに入れれば
実現できると思いますが、それもみっともない気がします。
また、そうすると「特定のページから記載項目を取り出す」
ことも難しくなります。
考えてみれば、レンタルビデオや電話会社の利用経歴など、
可変個数のデータを記録する処理は多くの場所で行われています。
そういう場合一般的にはどうしているのでしょうか?
あるいは、これらの処理はリレーショナルデータベースには
向いていないのでしょうか?
非常に初歩的な質問だと思うのですが、ご教示をお願いします。
また根本的な勘違いがあったらご指摘下さい。
No.1
- 回答日時:
正規化をします。
http://www.kogures.com/hitoshi/webtext/db-seikik …
>非常に初歩的な質問だと思うのですが、ご教示をお願いします。
>また根本的な勘違いがあったらご指摘下さい。
非常に重要なことですのでぜひしっかりと勉強してみてください。
参考URL:http://www.kogures.com/hitoshi/webtext/db-seikik …
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
お探しの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も見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
カラムが不定なデータベースの設計方法
MySQL
-
検索結果の列数を動的に変更したい
SQL Server
-
VIEWの元のテーブルのindexって有効なのでしょうか?
MySQL
-
-
4
exeファイルの中身を見ることは可能ですか?
フリーソフト
-
5
データベースの1要素に複数データを格納したい
その他(データベース)
-
6
同じIDで定義した要素の配列を取得したいが
JavaScript
-
7
postgreSQLのint型は桁数指定ができない??
PostgreSQL
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Viewにインデックスは張れ...
-
Oracle Databaseのインデックス...
-
主キー以外の項目にNotNull制約...
-
SPLIT PARTITON後のインデックス
-
SQLのIN句について
-
SQLの速度を調べるには…
-
INDEXの無効化
-
【Access】外部結合を行う前に...
-
特定のスキーマのテーブルを一...
-
GROUP BY で列名は指定できない...
-
ORA-00959: 表領域'****'は...
-
DBで第1正規形と第2正規形の...
-
SQLServerにおける、排他制御に...
-
異なるスキーマからビュー作成
-
Oracleの欠点
-
CLOB型へのINSERT
-
Oracle テーブルの列削除
-
select for updateのロック
-
Oracleでの登録するユーザーと...
-
データファイルの縮小
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Viewにインデックスは張れ...
-
INDEXの無効化
-
SQL*Loaderで、データを加工し...
-
アナライズとインデックス作成...
-
可変個数のデータはどう納める?
-
SQL*LoaderとInsertの違いについて
-
インデックス作成後アナライズ...
-
主キー以外の項目にNotNull制約...
-
文字列中のスペースを排除する...
-
テスト環境と本番環境で、DBか...
-
OracleTextの索引再構築について
-
データ表示順序
-
統計情報について
-
SQLの処理速度改善にむけて
-
論理読み込みブロック数とは?
-
Wordで複数の索引を作りたい
-
索引の再構築をすべき?
-
IN 句ではインデックスが使用さ...
-
該当データが存在しないときに...
-
PervasiveSQL (Btrieve) で、デ...
おすすめ情報