sqlデータの整合性

3088 ワード

五、根拠の完全性
ユーザーが入力したデータをデータベースに保存するのが正しいことを保証します。
データの完全性を確保する=テーブル作成時に表に制約を追加する
完全性の分類:
エンティティの完全性:
ドメインの完全性:
参照の完全性:
 
1、実体の完全性
エンティティ:すなわち表の行(1つのレコード)は、エンティティ(entity)を表します。
エンティティの完全性の役割:各行のデータが重複しないことを示す。
制約の種類:メインキー制約(primary key)  一意制約(unique)  自動成長列(autチャンネル)
 
1.1主要結合制約(primary key)
注:各テーブルにはメインキーがあります。
特徴:データが唯一で、nullではありません。
例:
最初の追加方法:
CREATE TABLEstudent(
id int primary key
name varhar(50)
)0
第二の添加方式:この方式の利点は、結合キーを作成できることである。
CREATE TABLEstudent(
id int、
name varhar(50)、
primary key(id)
)0
CREATE TABLEstudent(
classide int、
stuid int
name varhar(50)、
primary key(classid、stuid)
)0
第三の追加方法:
CREATE TABLEstudent(
id int、
name varhar(50)
)0
ALTER TABLEstudent  ADD  PRIMARY KEY(id)
1.2一意制約(unique):       特徴:データは重複できません。
CREATE TABLE student(
Id int primary key、
Name varrhar(50)unique
)0
 
 
1.3自動成長列(autouincrement) 
 sqlserverデータベース(identity)  oracleデータベース(sequence)
 
メインキーに自動成長の値を追加します。列は整数タイプのみです。
CREATE TABLEstudent(
Id int primary key autuincrement、
Name varrhar(50)
)0
 
INSERT INTOstudent(name)values(‘tom’);
 
2、ドメインの完全性
このセルのデータが正しいかどうかを制限するために、この列の他のセルと比較しません。
ドメインは現在のセルを表します。
ドメイン完全性制約:データタイプ非空制約(notnull)デフォルト値制約(default) 
check制約(mysql不支持)チェック(sex='男'or  sex='女'
1.1データタイプ:(数値タイプ、日付タイプ、文字列タイプ)
1.2非空制約:not null
CREATE TABLEstudent(
Id int pirmary key、
Name varrhal(50)not null、
Sex varhar(10)
)0
 
INSERT INTOstudent values(1、’tom’、null);
 
1.3デフォルト値制約default
CREATE TABLEstudent(
Id int pirmary key、
Name varrhal(50)not null、
Sex varrhar(10)default‘男’
)0
 
insert intonttudent 1 values(1,tom'、'女')
insert intonttudent 1 values(2、'jerry'、default);
3、引用完備性(完全性参照)
    :FOREIGN KEY 
例:
CREATE TABLEstudent(
sid int pirmary key、
name varrhal(50)not null、
sex varrhar(10)default‘男’
)0
 
createタブレット
       id int、
       score int
       sid int--外キー列のデータの種類は、必ずメインキーの種類と一致しています。
       foreign key(sid)references student(id)
)0
第二に外キーを追加します。
ALTER TABLEscore 1 ADD CONSTRAINT fk_stuscore FOREEGN KEY(sid)REFERENCES stu(id);
4、表と表の関係
l  一対一:例えばt_personとt_カードとは、人と身分証のことです。このような状況は主従関係、つまり誰が主表で、誰が表からですか?人は身分証がなくてもいいですが、身分証は人材が必要です。デザインリストには二つの案があります。
 1、t_にありますカードの表に外部キー列(相対的なtuuser表)を追加し、外部キーに固有の制約を追加します。
 2、t_を与えるカードの表のメインキーに外キー制約(相対的なtuuser表)を追加します。つまりt_カードのメインキーも外部キーです。
l  ペアが多いです。一番多いのはペアが多いです。ペアの多さと多対一、これはどの角度から見られますか?tう。userとt_セレクションの関係は、t_から。アメリカから見たらペアが多いです。t_から見たら。セレクションの角度から見れば、多対一です。このような情況はすべて多方面で外国キーを創建するのです!
l  多対多:例えばt_stuとt_teacherの時計は学生一人で複数の先生がいますが、先生一人でも多くの学生がいます。この場合は通常、中間テーブルを作成して、複数のペアの多関係を処理する必要がある。例えばもう一枚の表t_を作成します。stutea表は、2つの外鍵を与え、1つはt_に対して与えられます。stu表の外ボタン、もう一つはt_に対してteacherの表の外ボタン。