데이터베이스 - 데이터베이스 무결성
13344 단어 【데이터베이스 원리】데이터베이스 원리
데이터베이스 무결성
데이터의 정확성과 상용성
데이터의 무결성과 보안이란 서로 다른 개념의 데이터의 무결성을 방지하기 위해 데이터베이스에 의미에 부합되지 않는 데이터가 존재하는 것을 방지한다. 즉, 데이터베이스에 부정확한 데이터 방지 대상이 존재하는 것을 방지한다. 의미에 맞지 않고 부정확한 데이터 데이터의 안전성은 데이터베이스를 보호하고 악의적인 파괴와 불법 액세스 방지 대상을 방지한다. 불법 사용자와 불법 조작은 데이터베이스의 무결성을 유지하기 위해DBMS는 다음과 같아야 합니다. 1.완결성 제약조건을 정의하는 메커니즘 2.무결성 검사를 위한 방법 3.위약 처리
솔리드 무결성
솔리드 무결성 정의 관계 모델의 솔리드 무결성 CREATE TABLE에서 PRIMARY KEY로 단일 속성 구성을 정의하는 코드는 열 제약조건으로 정의되고 테이블 제약조건으로 정의되며 여러 속성에 대한 코드는 테이블 제약조건으로 정의됩니다.
[ 1] Student Sno
(1)
CREATE TABLE Student
(Sno CHAR(9) PRIMARY KEY,
Sname CHAR(20) NOT NULL,
Ssex CHAR(2) ,
Sage SMALLINT,
Sdept CHAR(20));
(2)
CREATE TABLE Student
(Sno CHAR(9),
Sname CHAR(20) NOT NULL,
Ssex CHAR(2) ,
Sage SMALLINT,
Sdept CHAR(20),
PRIMARY KEY (Sno)
);
[ 2] SC Sno,Cno
CREATE TABLE SC
(Sno CHAR(9) NOT NULL,
Cno CHAR(4) NOT NULL,
Grade SMALLINT,
PRIMARY KEY (Sno,Cno) /* */
);
실체 완전성 검사와 위약 처리를 삽입하거나 메인 코드 열을 업데이트할 때 RDBMS는 실체 완전성 규칙에 따라 자동으로 검사한다.포함: 1.주 부호 값이 유일하는지 확인하고 유일하지 않으면 삽입이나 수정을 거부합니다.주 코드의 각 속성이 비어 있는지 확인하십시오. 하나만 비어 있으면 삽입이나 수정을 거부합니다
참조 무결성
참조 무결성 정의 관계 모델의 참조 무결성 정의CREATE TABLE에서 FOREIGN KEY 구문을 사용하여 외부 코드로 정의할 때 외부 코드가 참조되는 테이블의 마스터 코드를 나타내는 REFERENCES 구문을 사용합니다.
, SC ,(Sno,Cno) 。Sno,Cno Student Course
[ 3] SC
CREATE TABLE SC
(Sno CHAR(9) NOT NULL,
Cno CHAR(4) NOT NULL,
Grade SMALLINT,
PRIMARY KEY (Sno, Cno), /* */
FOREIGN KEY (Sno) REFERENCES Student(Sno),
/* */
FOREIGN KEY (Cno) REFERENCES Course(Cno)
/* */
);
완전성 검사와 위약 처리 참조 완전성 위약 처리
[ 4]
CREATE TABLE SC
(Sno CHAR(9) NOT NULL,
Cno CHAR(4) NOT NULL,
Grade SMALLINT,
PRIMARY KEY(Sno,Cno),
FOREIGN KEY (Sno) REFERENCES Student(Sno)
ON DELETE CASCADE /* SC */
ON UPDATE CASCADE, /* SC */
FOREIGN KEY (Cno) REFERENCES Course(Cno)
ON DELETE NO ACTION
/* course SC */
ON UPDATE CASCADE
/* course cno , SC */
);
사용자 정의의 완전성은 특정한 응용 데이터에 대해 반드시 만족해야 하는 의미에 따라 RDBMS가 제공되고 응용 프로그램이 부담하지 않아도 된다는 것이다
속성상의 제약조건 정의
CREATE TABLE
(NOT NULL)
(UNIQUE)
(CHECK)
1.
[ 5] SC , Sno、Cno、Grade 。
CREATE TABLE SC
(Sno CHAR(9) NOT NULL,
Cno CHAR(4) NOT NULL,
Grade SMALLINT NOT NULL,
PRIMARY KEY (Sno, Cno),
/* , Sno,Cno , * /
);
2.
[ 6] DEPT, Dname , Deptno
CREATE TABLE DEPT
(Deptno NUMERIC(2),
Dname CHAR(9) UNIQUE,/* Dname */
Location CHAR(10),
PRIMARY KEY (Deptno)
);
3. CHECK
[ 7] Student Ssex “ ” “ ”。
CREATE TABLE Student
(Sno CHAR(9) PRIMARY KEY,
Sname CHAR(8) NOT NULL,
Ssex CHAR(2) CHECK (Ssex IN (‘ ’,‘ ’) ) ,
/* Ssex ' ' ' ' */
Sage SMALLINT,
Sdept CHAR(20)
);
속성상의 구속조건 검사와 위약 처리
원조를 삽입하거나 속성의 값을 수정할 때 RDBMS는 속성의 제약조건이 충족되었는지 확인하고 충족되지 않으면 작업이 실행되지 않음
원조상의 제약 조건의 정의
CREATE TABLE에서 CHECK 구문을 사용하여 원조의 제약 조건을 정의할 수 있습니다. 즉, 원조급의 제한은 속성 값의 제한과 비교하면 원조급의 제한은 서로 다른 속성 간의 수치의 상호 제약 조건을 설정할 수 있습니다.
[ 9] , Ms. 。
CREATE TABLE Student
(Sno CHAR(9),
Sname CHAR(8) NOT NULL,
Ssex CHAR(2),
Sage SMALLINT,
Sdept CHAR(20),
PRIMARY KEY (Sno),
CHECK (Ssex=' ' OR Sname NOT LIKE 'Ms.%')
/* Sname Ssex */
);
, Ssex=‘ ’ ;
, Ms.
CONSTRAINT
CONSTRAINT
[PRIMARY KEY
|FOREIGN KEY
|CHECK ]
[ 10] Student, 90000~99999 , , 30, “ ” “ ”。
CREATE TABLE Student
(Sno NUMERIC(6)
CONSTRAINT C1 CHECK (Sno BETWEEN 90000 AND 99999),
Sname CHAR(20)
CONSTRAINT C2 NOT NULL,
Sage NUMERIC(3)
CONSTRAINT C3 CHECK (Sage < 30),
Ssex CHAR(2)
CONSTRAINT C4 CHECK (Ssex IN ( ' ',' ')),
CONSTRAINT StudentKey PRIMARY KEY(Sno)
);
Student 5 , ( StudentKey) C1、C2、C3、C4 。
[ 13] Student , 900000~999999 , 30 40
,
ALTER TABLE Student
DROP CONSTRAINT C1;
ALTER TABLE Student
ADD CONSTRAINT C1 CHECK (Sno BETWEEN 900000 AND 999999),
ALTER TABLE Student
DROP CONSTRAINT C3;
ALTER TABLE Student
ADD CONSTRAINT C3 CHECK (Sage < 40);