2017-02-15 5 views
2

私はその愚かな質問を知っていますが、私はcharの代わりにint値を保存すると良い習慣を知りたいと思います。データベースintまたはcharの値を保存するための良い方法は何ですか?

データベースを週に保存したいとき。

データベースにchar値を保存すると、より説明的なものになると思います。 だから、どれがいいのか、なぜですか? パフォーマンスに問題はありますか?

+4

文字列データを文字列として保存します。数値データを数値として保存します。データが整数の場合は、整数として保存します。これは困難でも直観的でもありません。 –

+1

この記事では間違ったデータ型を使用する際の問題点を説明しています。 http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/12/bad-habits-to-kick-using-the-wrong-data-type.aspx –

+0

あなたの現在の回答は素晴らしいです。個人的には、どちらが良いかを判断できません。そのため、私は両方をアップvotedしました。彼らが欠けているのは、Sean Langeのコメントで提供されているリンクだけです。 Aaron BertrandのBad habbitsシリーズは、データベースを扱うすべての人にとって必読です。 –

答えて

5

charはそれほど説明的ではありません。その値をデータベース内の何かに使うつもりなら、それは何とか変換する必要があります。

最大値が52/53(week/isoweekに応じて)になる場合は、tinyintを使用してください。それ以外の場合はinteger data typeを使用してください。

もう1つの潜在的な問題はソートです。週に並べ替える場合は、先頭のゼロを格納して、charデータ型を使用する順序に並べ替えるか、1, 11, 12..の並べ替えのままにしますか?問題イスト

+2

は* sorting *についての非常に重要なヒントのためにこれを投票しました! – Shnugo

+0

お返事ありがとうございます。 –

+0

@DurgpalSinghお手伝いします! – SqlZim

3

この文:

私たちは、データベース内のchar値を保存する場合は、そのより説明的だと思う

データベース内の値は、記述なるように設計すべきではありません。

は常に適切なデータ型に値を格納する必要があります。

あなたは違いを計算する必要があると想像してください。文字列を分割/解析し、数値型にキャストし、計算を行い、出力を再フォーマットする必要があります。

説明文は、プレゼンテーションレイヤ、レポート、フロントエンドとの関連でのみ使用してください。

+0

お返事ありがとうございます。 –

関連する問題