0

データベースシステムでさまざまなテーブルを作成します。次に、それらの間に関係を作成する必要があります。つまり、あるテーブルの主キーを別のテーブルの外部キーに接続する必要があります。テーブル自体を作成するときにそれを行う必要があります。データを挿入するとそれらは相互に接続され、それらは同一ですか?

たとえば、2つのテーブルを作成するときは、次のようにします。

CREATE TABLE employee (
  fname    varchar(15),
  minit    varchar(1),
  lname    varchar(15),
  ssn      char(9),
  bdate    date,
  address  varchar(50),
  sex      char,
  salary   decimal(10,2),
  superssn char(9),
  dno      number(4)
);

CREATE TABLE department (
  dname        varchar(25),
  dnumber      number(4),
  mgrssn       char(9), 
  mgrstartdate date
);

ここでは、dnoをdnumberに接続し、ssnをmgrssnに接続する必要があります。

4

2 に答える 2

0

データを追加しても、テーブルの制約に特別なことは何もありません。データベースは、値が同一であることをどのように認識しますか?それらは同じように見えるかもしれませんが、場所によって意味が異なります。

テーブル宣言に他のテーブルへの外部キー参照が含まれている場合は、それだけです。

そうでない場合(そしてあなたの例では見られません)、参照整合性を維持するために1つ追加する必要があります。

データを追加した後で制約を追加することはできますが、データが有効でない場合(外部キーフィールドのnullなど)、制約を追加することはできません。

于 2012-07-17T10:21:31.370 に答える
0

データベーステーブルの関係は、作成する必要のある制約です。データだけに頼るべきではありません。

データベース制約は、列の動作を制限できるユーザー定義の構造です。

主キーの制約

PRIMARY KEY制約は、列の値がテーブル内のすべての行の中で一意であるかどうかをチェックし、null値を許可しません。したがって、PRIMARY KEYには、NOTNULL制約とUNIQUE制約の両方の動作があります。PRIMARY KEYは、2つ以上の列にまたがることができます。複数列のPRIMARYKEYは、複合キーまたは複合キーと呼ばれ、混乱を招く可能性がありますが、基本的に、これらの用語は、キーが列にまたがることを意味するだけです。

外部キー制約

FOREIGN KEY制約は、列または列のグループで受け入れ可能な値を、主キーの定義に使用される列または列のグループのリストにある値に制限します。実装に応じて、これは外部キーのすべてのメンバーにNOTNULL列制約を課す場合と課さない場合があります。実装によって列または列のセットが必須になる場合、FOREIGN KEYの列のカーディナリティが必須になり、1..1がPRIMARYKEYになります。ただし、デフォルトでは、FOREIGNKEYはPRIMARYKEYに対して0..1です。これは、FOREIGNKEY列を含む行をテーブルに挿入できることを意味します。少なくとも、制約された列または列のセットがnull値である場合に実行できます。

SQLServer2008でこれらの制約を作成するための便利なリンクを次に示します。

于 2012-07-17T10:21:51.267 に答える