db ユーザー定義データ型を作成するのがベストプラクティスですか?

StackOverflow https://stackoverflow.com/questions/963391

質問

既存の型を使用する代わりにユーザー定義型を作成することがベスト プラクティスですか?私のプレビュー作業場では、すべての基本タイプが事前定義されていました。これはベスト プラクティスですか?どのようなメリットがあり、どのようなデメリットがあるのか​​。
どうもありがとう!

役に立ちましたか?

解決

MS SQL Server では、このアイデアは素晴らしいです。ただし、大きな問題があります しかし 彼らへ:使用後に変更することはできません。 ALTER TYPE .... 声明。これは大きな問題となる可能性があります。

このことを考慮:ユーザー定義型 ISBN = VARCHAR(10) を持つ書店アプリがありますが、これは魅力的に機能します。現在、国際委員会は ISBN フィールドを 13 文字に増やすことを決定しました。残念ながら、ISBN フィールドはありません。 ALTER TYPE ISBNType..... したがって、唯一の選択肢は、基本的にデータベース全体でその型のすべての列を削除し、その型を新しい形式で再作成し、それらの列をすべて再作成することです。

アイデアは素晴らしいのでぜひ使ってみたいと思っていますが、私の意見では、現状ではほとんど使い物にならないのが残念です。

マルク

他のヒント

少し遅れて、しかし...私の2つのCTSます。

ユーザー定義型は、概念や論理モデル内のドメインの役割を果たし、あなたが物理データベースであなたの論理データモデルを実装する場合、ユーザー定義型の使用が最も近い近似値になります。これは、自動的に実施に移すことができるグラフィカルモデル、それはのUDTを使用せずに行うことができるより良いを使用するなどの利点を提供します。

ドメインを使用すると、SSNフィールドに郵便番号を格納し、それらが実行時にデータベースによってキャッチ(あるいはコンパイル時)を有するように試みを検出することができます。データがストレージに当たる時点で:これは、彼らが強制されるべきで全社のビジネスルールを適用することができるようになります。どこか他のユーザーへの礼儀であるが、彼らは絶対に誰もが彼らの周りに行くことを確認するために実施する必要がある場所です。

また、ANSIのSQLで定義されてのUDT:1999カプセル化方法、およびサブタイプをすることができます。これは制約に対処するビジネスルールで特定の変更は、これまで実施を触れることなく、データベースに変更することができることを意味します。

しかし...として現在実装UDTが望まれるためにたくさん去ります。私が説明するようにSQL Serverは、さらに少ない必ずオラクルに関する標準を実装してもわかりません。そして、彼らがそうしても、すぐにあなたがBIツール、ETLツーリングや他のではなく、単純な志向のツールを使用して明らかになるだろうのUDTを使用しての欠点:彼らは通常、彼らが行う場合でも、UDTのを理解していないが、彼らはされません基本的な型(int型、char型、日付/時間)に過半数ベースために自分自身をそれらを使用することができます。

レポート作成ツールについては、のは、フィールドの組み合わせを持っているUDTを考えてみましょう。さて、どのようにデータベースに依存しないETLツールは、タイプを理解することができるだろうか?それは、それを表示したり、計算のためにそれを使用するために構造を理解することができなければなりません。そして、すべてのサポートされているデータベースのためのその - 困難な作業。誰もがUDTのを使用していますので、彼らはこれを行うことはありません。それは悪循環だが、我々はまだそれと一緒に暮らす必要があります。

それとは別に、ほとんどのデータベースでのUDTのサポートは、どちらかのすべてがホットではありません。種類を変更することは非常に難しいことができます。 1999年からどこでもので、異なる:構文はどこでも同じである必要がありますが、それらの投与は、SQLで定義されていません。例えば、SQLサーバーでのUDTの所有者を変更してみてください。これはかなり困難にするために使用 - 。SQL Serverの2016年についてはよく分からないが、UDTのは、私はその領域で大きな改善を期待していないよ、フォーカスエリアのように見ていないことを考えると

あなたがUDTのに本当に複雑なコードを追加する場合は、

最後に、あなたは良いデバッグオプションの欠如を持っている環境でプログラミングしている古い問題に遭遇します。それはどちらか助けていません。

だから:あなたはあなたのデータベースを完全に制御を持っており、すべての相互作用があなたのソフトウェアを経由する場合は、UDTが非常に参考にすることができます。そうでない場合、彼らは首の巨大な痛みをすることができます。 、あなたのシナリオでは場合どちらであるあなたが言うことができる唯一のものです。

ユーザー定義のデータ型は、どのようにクールですMS SQL Serverの?

個人的に、私はそれらを使用していないが、私はそれらを見てきました。一つの問題は、クライアントコードは、少なくともMS SQL Serverの、IIRC、唯一の基本型を認識することです。そして、バージョン間での移植/行動ます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top