「リレーションの各属性がアトミックである場合」という1NFの定義を読みました。アトミックとは何か教えてください。
コメント
- 関連性。
回答
1NFでは、すべてのリレーションのすべてのタプルのすべての属性位置に、適切なタイプの単一の値が含まれている必要があります。 。タイプは任意に複雑にすることができます。実際、タイプはリレーションにすることができます。 (CJ Dateの本データベースの詳細:実践者のための関係理論は、この問題を「非常に理解しやすい方法で扱っています。)
「アトミック」は実際には決して意味がありません。 「不可分」、それがその用語がついに支持を失っている理由です。大まかに言えば、「アトミック」とは、値にコンポーネントパーツがある場合、dbmsがそれらのパーツの存在を無視するか、それらを操作する関数を提供することを意味します。たとえば、タイムスタンプ値にはこれらの部分があります。
- 年
- 月
- 日
- 時間
- 分
- 秒
- ミリ秒
この種の値は明らかに分割可能であり、すべてのデータベース管理システムはそれらの部分を操作する機能を提供します。また、タイムスタンプを単一の値として選択する方法も提供します。 (もちろん、そうです。)
回答
「アトミック」とは、1969年からのコッドの元の概念を指します。リレーション内の各タプルの各属性は単一の値で構成され、CODASYLモデルのようなデータベースでサポートされている種類の複数値の構造を許可しないようにする必要があります。
最新のSQLDBMSでは、アトミック性は実際には問題ではありません。 SQLテーブルでは複数値の列を使用できず、値は常に「アトミック」です。
コメント
- 技術的には正しいですが、SQLテーブルでは値として大きな文字列を使用できます。 、これは実際には抜け穴です。いくつかのコンマ区切りの10進整数、ASCII日付などを保持する文字列フィールドは、文字に続くかどうかに関係なく、原子性の意図に違反しているように見えます。…
回答
アトミックとは、それ以上分割できないデータを意味します。
アトミック性のルール:
- ルール1:アトミックデータを含む列は、同じ列に同じタイプのデータの複数の値を含めることはできません。
- ルール2:アトミックデータを含むテーブルは、同じデータ型の複数の列を含めることはできません。
フルネームの列のように、「姓と名にさらに分割できるため、アトミックである可能性があるとは言えません。関心のある列もさらに分割できるため、可能な列」分割はアトミックと呼ばれます。
回答
キーを分解できないことを意味します。たとえば、forename、surname、telephone_numberの3つの列を持つテーブルがあるとします。(forename、surname)で複合主キーを宣言します。その主キーは実際にはアトミックではないため 2つの列で構成されています。ここで、テーブルをfull_nameとtelephone_numberの2つの列に変更し、full_nameに主キーを設定するとします。キーはアトミックになりましたか?いいえ、アプリケーションでは、スペース上でそれをフォアネームとサーネームに分割できるためです。次に、テーブルid、full_name、telephone_number、id(整数)の主キーを作成しましょう。 整数は意味のある分解ができないため、アトミックです。
コメント
- ただし、例は、アトミック性"はキーを分解できないことを意味するという文で始まります"。それは'の意味ではありません。属性が単一の値で構成されていることを意味します。非アトミック"複数の属性で構成されるキーについて。
回答
Coddは元々、値自体がセットではないことを意味していたようです。これは有用な出発点ですが、データベースに関しては「アトミック」にはオントロジー的な意味がありません(CJ日付が正しい) Coddは、仕様の範囲外でさらに分解できないものとして定義を形式化しようとしました。 ialデータベース操作(つまり、年の抽出は特別なデータベース操作であるため、タイムスタンプはアトミックです)。言い換えれば、データベースがサブ値を分割できる場合、それは問題ありません。ただし、アプリケーションロジックを分解する必要のあるセット(順序付けられていないリスト)やオブジェクトは使用しないでください。
時間の経過とともに、運用環境でこの問題に苦しんでいる私は、Coddよりも厳密なアトミック性の中間定義を提案します。そして、Dateが説明するウサギの穴がない場合:
値は、次の場合に限り、第一正規形の目的でアトミックです。
- 値が設定されていない(はい、日付が一致しないことはわかっています)および
- フィールドのサブ部分への外部キー参照はありません。
特に、値の表現はその原子性を決定できません。 IPアドレスを「10.0.0.1」vsARRAY [10,0,0,1] vs 167772161として表すことは、3つすべてが同じ原子値を参照するため、1NF分析では重要ではありません。
特に、一般的(場合によっては便利です!)アトミック性に関する1NF違反には次のものがあります。
- タグの配列をブログの投稿またはコメントに格納する。
- テーブル内にテーブルを格納する。他の場所にある別の関係に対する参照整合性の要件があります。
これらの問題は、多かれ少なかれ同じデータ異常を生成します。
回答
地球上の場所を考えてみましょう。 (経度、緯度)ペアまたはHTM(Hierarchical Triangular Mesh)コードで見つけることができます。どちらも同じデータを測定するためです。これは物理的な事実であり、携帯電話で測定できます。グリッド番号を[経度、緯度]に変換します)、モデルでは両方とも原子または複合である必要があります。
測定に使用されるスケールとデータの表示に使用される表記を
データの性質。
コメント
- 私はこの投稿をいくつかのタイプミスのために編集しました。 'このユーザーが本物のJoeCelkoだとは思わないが、meta.stackexchange.comでなりすましを検索したところ、このスレッド。 stackexchangeの創設者であるAtwood氏とSpolsky氏の回答をご覧ください。許容できるようです。
回答
アトミックキーは、分解できない種類の主キーです。 Student_ID、Employee_IDのように、このキーがさらに分割されないことを意味します。