2009-07-08 12 views
3

私はSQL Express 2008版を使用しています。私は紙の上にデータベーステーブル/関係を計画しており、始める準備ができました。SQL 2008のデータ型 - 使用するデータ型はどれですか?

私はpkID_Officerのデータ型をクリックしたとき残念ながら、私は予想以上に提供されたので、疑問に設定されている。

誰もがこれらの日付の種類について説明と例があるされている場所に私を指すことができますどのフィールドがどのデータ型でよりうまく機能するかについて与えられます。

例:

  • はまだ当然の選択ID(主キー)のためにint型であるかUNIQUEIDENTIFIERそれは王冠だかかるのでしょうか?

  • 数字が「。」で区切られた電話番号。ハイパーリンク

  • NCHARおよびvCharになります(01.02.03.04.05)

  • メール

  • アイテム?

いつでも助けがあります。

ありがとう

マイク。

答えて

2

MSDNサイトには、SQL 2008のデータ型の概要があります。 IDフィールドのために

http://msdn.microsoft.com/en-us/library/ms187752.aspx

それが別々のシステムやテーブル全体で一意である必要があるか、データベースの外部IDを生成することができるようにしたい場合は、GUIDを使用します。さもなければint/identity値はうまく動作します。

私は計算をしていないので、私は文字データを保存します。私は電子メールが同じように格納されると思います。

ハイパーリンクに関しては、基本的にはハイパーリンクをvarcharとして保存し、リンクをクライアントに表示するか、マークアップ自体をデータベースに格納することができます。本当に状況に依存します。

現在または将来、2バイト言語をサポートする必要があると思われる場合は、nvarcharを使用してください。

+0

ありがとうございました。素晴らしいリンク。これらのデータ型には、目に見えるものよりも多くのものがありますが、ここでは簡単な基本的なものから始めます。 – RocketGoal

1

プライマリキーについては、常に自動インクリメントintを使用することをお勧めします(開始点として)。すべてをより使いやすくし、実際のデータとの「自然な」関係はありません。もちろん、これには例外があることができます...

0

UNIQUEIDENTIFIERは、GUIDは、次のとおりです。 http://de.wikipedia.org/wiki/Globally_Unique_Identifier

のGUID
は - 世界的にユニークな ある - 例えば過去ログを持っています彼女自身のオブジェクト(System.Guid) - 長さは16桁です

このようなことをしたい場合は、それを使用してください。 int-idでうまくいけば、それは大丈夫です。

電話番号/電子メール/ハイパーリンクは通常の文字列です。

0

NCHAR/NVARCHRは、CHAR/VARCHARデータ型のUnicode対象点です。私はそれらを使用しない魅力的な理由がない限り、ほとんどいつでも私のアプリでそれらを使用します。

1
  • はID(プライマリキー)のint型で、それでもなお明らかな選択肢か、uniqueidentifierがそれを受け取りますか?

私は個人的にGUIDよりもINT IDENTITYを優先します。特にクラスタ化インデックスの方が望ましいです。 GUIDは性質上ランダムなため、SQL Server上のクラスタードインデックスとして使用すると、多くのインデックスの断片化が発生し、パフォーマンスが低下します。 INTにはこのような問題はありません。さらに、16バイトに対して4バイトしかないので、たくさんの行と多数の非クラスタ化インデックスがあります(クラスタ化されたキーは、 GUIDを使用すると、スペース要件が不必要に膨らんでしまう(ディスク上およびマシンのRAM上)

  • 数字が「。」で区切られた電話番号。私はこれらのすべての文字列フィールドを使用したい

ハイパーリンクになります(01.02.03.04.05)

  • メール
  • アイテム。

    「外国語」の言語サポートを必要としない限り、VARCHARは問題ありません。英語と西ヨーロッパ言語は大丈夫ですが、東ヨーロッパやアジア言語(キリル文字、中国語など)では使用できません。

    NVARCHARは、これらの特別な厄介な言語をすべて価格で処理します。各文字は2バイトで格納されます。 100文字の文字列は、常に200バイトの記憶域を使用します - 常に。

    これはちょっと役立ちます。

    マーク

  • +0

    はい、あなたはクラスタ化されたキーとしてランダムなguidに問題があります。しかし、guidを主キーとして使用することについて質問しましたが、クラスタ化されずに主キーとして使用できることに注意してください。 – sisve

    +0

    @Simon:確かに、純粋なプライマリキーとして、GUIDはINTと同じくらい良いです。主な問題は次のとおりです。既定では、SQL Serverのプライマリキーもクラスタ化されたキーであり、SQL Serverプログラマの大部分はそのことを知らない –

    関連する問題