格納するデータの数が決められていない場合のテーブルのつくりかたについて質問です。
予め入力項目数が決定している時は、その数に合わせて列をつくればいいのですが、大きい入力用テキストボックスが一つだけあって、ユーザにaaa,bbb,ccc,123といったようにデータを入力してもらい、カンマで区切られた一つひとつのデータをデータベースに格納するといったことをしたい場合、データが一つだけの場合も100を越えるような場合もあるので、テーブルをどのように構築すればいいのか困っています。
アドバイスお願いいたします。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
KELU_NKUNさんのイメージでは、こんなテーブルを作りたいということでしょうか?
test_table
user_id, value1, value2, value3, value4
----------------------------------------
1, aaa, bbb, ccc, 123
2, xxx, eee, kkk,
上記テーブル構造では入力値の数が4つまでに対応してますが、
もしユーザーによってデータ数が5つ以上となる場合は無理です。
5つ以上のデータ数に対応する為には、ユーザーの入力値の最大データ数を決めておかなければなりません。
最大データ数を100とするなら、value1~value100までのフィールドを作っておけばいいだけです。
もし最大データ数を決めておけない場合は、
ユーザーデータ格納時に、現在のvalueフィールドの数と、今から格納するデータ数の差を計算して
足りないフィールド数がある場合は、その分のフィールドを追加⇒その後ユーザーデータを格納。
といったことをすれば大丈夫でしょう。
ただ、こういった構造にしてしまうと、データを引っ張って来るときなどが面倒だと思います。
なので、行を増やしていく方法が良いと思います。
さっきのテーブルを行を増やす方法にするとこんなイメージになります。
test_table
user_id, value
----------------------------------------
1, aaa
1, bbb
1, ccc
1, 123
2, xxx
2, eee
2, kkk
No.1
- 回答日時:
ここのカテゴリ通り、RDBMSはMySQLなのでしょうか?
RDBMSにより異なりますが、表を構成する列数の上限は、そんなに多くありません。512だったり1024とかです。
また、カンマ区切りといったデータを1列に格納するというは、柔軟な操作性を提供してくれるSQLを、わざわざ使いにくくし、改造がしにくく、性能を上げたりといった工夫ができなくなる場合が多いです。
ただ、列数が多いと、性能が極端に悪くなるRDBMS、バージョンもあるため、大規模なシステムで性能を出したい場合、表定義上は1個の列を、アプリ側で複数フィールドの値として操作するといったことを敢えて行う場合もあります。
しかし、KELU_NKUNさんが考えてるのは、そういったシステムではないですよね?
ちゃんと正規化し、列で管理するのでなく、行で管理することを考えましょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) vbaについて 主に以下のような設定をしたいです。 Aブックの表の行数が20未満だったら Bブックの 1 2023/06/08 23:40
- MySQL 複数DBテーブルからのデータ取得 3 2022/05/17 15:02
- その他(データベース) IT用語について質問です。 以前ITパスポートの試験を受けた際にデータベースが何の集まりかについての 2 2022/12/10 12:29
- Visual Basic(VBA) 【VBA】データを入力後に,同一シート内に履歴として転記するVBAコードを教えていただきたいです。 3 2022/11/16 01:37
- Visual Basic(VBA) 顧客ごとに違う点検案内を作成するマクロ 4 2022/09/16 05:34
- Excel(エクセル) VBAで、シート間の転記するコードを教えてください。 4 2023/03/26 10:43
- 会社・職場 Excel、Googleスプレッドシートなどへのデータ入力 2 2023/07/06 05:59
- その他(Microsoft Office) パワークエリの複数ファイルのデータ統合について 3 2022/07/14 17:06
- Visual Basic(VBA) VBAで重複データを確認したい 5 2022/10/07 16:24
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Accessでデータシートに同じデ...
-
Accessのテーブルデータを一気...
-
テーブルで一番古いレコードだ...
-
Oracleで上書きImportはできま...
-
ビューのソートについて
-
ORA-01401が表示され、データが...
-
結合テーブルでINSERTする方法...
-
MS Accessを共有した際にファイ...
-
アクセス レコードセットを更...
-
VBAでSQLServerへのODBC接続
-
重複クエリを使ったデータ削除
-
AC2000のクエリで重複データか...
-
マテリアライズドビューとスナ...
-
構文エラー : 演算子がありませ...
-
mysqlへの書き込みがリロードす...
-
accessでレコード更新直後の反...
-
同一テーブルのデータを参照し...
-
ACCESSで容量が50MBになった...
-
sybase bcpでのデータインポー...
-
PostgreSQLのパフォーマンスに...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessでデータシートに同じデ...
-
Accessのテーブルデータを一気...
-
テーブルで一番古いレコードだ...
-
ビューのソートについて
-
Oracleで上書きImportはできま...
-
結合テーブルでINSERTする方法...
-
accessでレコード更新直後の反...
-
このISAMでは、リンクテーブル・・
-
アクセス レコードセットを更...
-
重複クエリを使ったデータ削除
-
処理の途中で停止させ、再開さ...
-
マテリアライズドビューとスナ...
-
同一テーブルのデータを参照し...
-
ERROR1062:Duplicate entry.......
-
「クリップボードにコピーされ...
-
ORA-01401が表示され、データが...
-
ACCESSで容量が50MBになった...
-
Accessでの稼働日数計算の方法
-
構文エラー : 演算子がありませ...
-
削除したテーブルを元に戻すこ...
おすすめ情報