情報技術(または、より一般的に知られているIT)の領域では、列挙型は、定義済みの定数のセットをカプセル化する特別なデータ型です。そのため、変数は、定義済みの値の1つしか保持できません。一般的な例には、北、南、東、西のコンパス方位や曜日などがあります。
列挙型をデータベーステーブルに格納する際の複雑な要因の1つは、列挙型の値が数値またはアルファベット(つまり、文字列)である可能性があることです。さらに、許容される列挙型セットの一部ではない値をユーザーがテーブルに追加できないようにする必要があるでしょう。本日のブログでは、これらの問題の両方に対処します。
プライマリキーとしての文字列
リレーショナルデータベースのプライマリキーの選択に関するこのシリーズの最終回となる第3回では、文字列データをプライマリキー(PK)として使用する理由のいくつかを検討します。パート1で、ナチュラルプライマリキーとサロゲートプライマリキーについて説明し、一方を選択する理由を検討したことを思い出してください。パート2では、プライマリキーとしての文字列と数値のデータ型を調査し、どちらが好ましいかを確認しました。ここで記録を整理し、文字列(またはアルファベット)データが適切なPKを作成できるかどうかを結論付けます。
プライマリキーとしての文字列データ型と数値データ型
リレーショナルデータベースのプライマリキーの選択に関するこのシリーズへようこそ。パート1では、ナチュラルプライマリキーとサロゲートプライマリキーについて説明し、どちらか一方を選択する理由を検討しました。今回の記事では、プライマリキーとしての文字列と数値のデータ型について調べ、どちらが好ましいのかを確認します。
ナチュラルキー対サロゲートキー
データベース設計者として直面する最初の決定事項の 1 つは、テーブルで使用するプライマリキー(PK)の種類です。データベース管理者、開発者、テスターなど、日常的にデータベースを扱っている人に尋ねると、無数の意見や正当な理由が得られるでしょう。答えを導き出すための障害をさらに複雑にしているのは、万能なソリューションがないことです。それを念頭に置いて、このシリーズでは、様々な種類のPKに賛成する理由と反対する理由の両方を示します。それら全てのアイデアのどこかに、あなたの組織のニーズのために使用するのに最適なタイプのPKへと導くいくつかのアイデアがあるでしょう。この最初の記事では、PKの2つの基本的なタイプであるナチュラルキーとサロゲートキーを比較します。その後、データベースの自動インクリメント機能を使用するかどうか、およびどのデータ型(複数存在する場合)が最適なPKになるかについて説明します。
アプリケーション開発者は、ストアドプロシージャ内にデータベース操作を格納することで最適なパフォーマンスが得られ、SQLインジェクション攻撃から保護されると長い間信じてきました。また、これらの利点は、データベースロジックのメンテナンス、テスト、および別のベンダーへの移行に関連する追加コストに見合う価値があると考えられていました。近年、開発者がこれらの長年の前提に疑問を持ち始めたため、流れはストアドプロシージャ(またはproc)からHibernateやEntity Frameworkなどのオブジェクトリレーショナルマッパー(ORM)に変わりつつあります。
ストアドプロシージャは時代遅れのツールですか?の記事では、アプリケーションコードとORMを優先してストアドプロシージャを避けるいくつかの理由を取り上げました。今週は、上記で紹介した2つの神話を調査し、今日でもそれらが精査に耐えられるかどうかを見ていきます。