dポイントプレゼントキャンペーン実施中!

以下の条件でデータベースのテーブルの列をすべてvarcharで扱う事に何か弊害がありますか?

【条件】
・テーブルに格納するデータは数値(浮動少数含む)と文字列のみ。
・このテーブルには膨大なcsvデータを格納し、必要時にselect句で取得しcsvデータに復元します。
・参照するだけで数値の計算はしません。

【varcharで管理したい理由】
格納するcsvデータはもともと別のデータベースのテーブルに格納されているものですが、csvデータの構造が正確にわからないためです。

個人的には、上記の様な条件のもと使用する場合は弊害はないと考えます。ご意見、ご回答お願いします。

質問者からの補足コメント

  • データベースはSQLSERVER です

      補足日時:2020/10/14 22:44

A 回答 (2件)

1.


管理のために、主キーとなる列は別にあったほうが良い

2.
性能のために、検索用キーとなる列が別にあったほうが良い

3.
CSV のままではなく JSON の形式で格納すれば、
JSON 関数で加工できるので便利
https://docs.microsoft.com/ja-jp/sql/t-sql/funct …
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2020/10/23 20:32

私なら、ちゃんと型を合わせます。



・ただ文字列を検索して抽出するだけだったら、わざわざDBは使わない。
CSVファイルをそのまま使った方が楽。

・DBに登録したのなら、取り出すときはDB側で集計等をして使いたいデータだけをCSVで受け取れるようにした方が便利

・数値順に並び換えてCSVを作りたい、といったことが難しい( '10' < '2' が真)
・日付での検索も難しい ('10-Aug-2020' < '20-Jan-2020' が真)

・DBのファイルサイズが大きくなる可能性がある

・元のDBとまったく同じ型にする必要はない。
CSVに内容に合わせればいい。


・日本語等の「全角文字」が入っている場合、varcharで扱えないことがある。
    • good
    • 0
この回答へのお礼

おっしゃる通りファイルで管理すべきですが、データ量(3GB)も多い上にcsvのデータを複数人で参照する事があり、特定項目でデータを絞り込んでselectする事がありデータベースに格納したが都合が良いかと考えました。少々システムとしては冗長な構成ですが。。
ちなみに、クライアント側からはwhere句で絞り込む条件ですが、ある一つの文字列だけが格納された列だけとなります。
※文字コードは互いにShiftjisです。
groupbyなどの集計も行わず、ただselectだけです。
その他注意事項ありましたら教えて頂けると幸いです。

お礼日時:2020/10/15 21:16

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