Expérience 3 : Expérience de langage d'intégrité

Expérience 3 : Expérience de langage d'intégrité

Objectif de l' expérience :
Maîtriser la définition et la méthode de maintenance de l'intégrité des données
Contenu de l'expérience :
1. Intégrité de l'entité 2. Processus et exigences de l'expérience d'
intégrité référentielle : 1. Intégrité de l' entité Définir l'intégrité de l'entité, supprimer l'intégrité de l'entité et pouvoir écrire deux types Déclaration SQL d'intégrité de l'entité (1) Définir l'intégrité de l'entité lors de la création d'une table (2) Définir l'intégrité de l'entité après la création d'une table (3) Vérifier que les contraintes d'intégrité fonctionnent 2. Intégrité référentielle Définir l'intégrité référentielle, supprimer les références Intégrité, peut écrire des instructions SQL qui définir l'intégrité référentielle de deux manières (1) Définir l'intégrité référentielle lors de la création d'une table (2) Définir l'intégrité référentielle après la création d'une table (3) Vérifier que les contraintes d'intégrité référentielle fonctionnent Difficultés Objectif de l'expérience : définir l'entité et l'intégrité référentielle lors de la création d'une table Difficulté expérimentale : définir l' intégrité de l' entité pour plusieurs codes candidats et définir la gestion par défaut de l'intégrité de référence . définition de l'intégrité au niveau de la table) 3) L'intégrité de l'entité est définie après la création d'une table (définition de l'intégrité au niveau de la table) (4) L'intégrité de l'entité est définie (le code principal est défini par (5) Définir l'intégrité de l'entité lorsqu'il existe plusieurs codes candidats Définissez l'intégrité de l'entité de la table des pays, où nationKey et name sont tous deux des codes candidats, choisissez nationKey comme code principal et définissez une contrainte unique sur le nom.























(6) Supprimer l'intégrité de l'entité
Supprimer le code primaire de l'entité pays
(7) Vérifier l'intégrité de l'entité
Insérer deux enregistrements identiques
2. Intégrité référentielle
(1) Définir l'intégrité référentielle lors de la création d'un tableau
(2) Définir l'intégrité référentielle après la création d'un tableau (
3 ) Le code étranger est composé de plusieurs attributs
(4) Définit la gestion par défaut de l'intégrité référentielle Définit
l'intégrité référentielle de la table des pays, lors de la suppression ou de la modification de l'enregistrement référencé, fixe la valeur de l'enregistrement correspondant dans la table de référence à une valeur nulle
( 5 ) Supprimer l'intégrité référentielle
Supprimer la clé étrangère de la table des pays
(6) Vérifier l'intégrité référentielle
Insérer un enregistrement de pays pour vérifier que l'intégrité référentielle fonctionne

référence:

1.实体完整性
(1)创建表时定义实体完整性(列级完整性定义)
 CREATE TABLE supplier(
suppkey INTEGER PRIMARY KEY,
name CHAR( 25),
address VARCHAR( 40),
nationkey INTEGER,
phone CHAR( 15),
acctbal REAL,
comment VARCHAR( 101) );2)创建表时定义实体完整性(表级完整性定义)
CREATE TABLE supplier (
suppkey INTEGER,
name CHAR( 25),
address VARCHAR( 40),
nationkey INTEGER,
phone CHAR( 15),
acctbal REAL,
comment VARCHAR( 101),
CONSTRAINT PK_supplier PRIMARY KEY(suppkey));3)创建表后定义实体完整性(表级完整性定义)
CREATE TABLE supplier (
suppkey INTEGER,
name CHAR(25),
address VARCHAR(40),
nationkey INTEGER,
phone CHAR( 15),
acctbal REAL,
comment VARCHAR( 101)); 

ALTER TABLE supplier ADD CONSTRAINT PK_supplier PRIMARY KEY(Suppkey);

(4).定义实体完整性(主码由多个属性组成)
 CREATE TABLE partsupp(
partkey INTEGER,
suppkey INTEGER,
availqty INTEGER,
supplycost REAL,
comment VARCHAR(199),
PRIMARY KEY(partkey,suppkey)) ;

(5)有多个候选码时定义实体完整性
定义国家表的实体完整性,其中nationKey和name都是备选码,选择nationKey作为主码,name上定义唯一性约束。
CREATE TABLE nation (
nationkey INTEGER PRIMARY KEY,
name CHAR(25) UNIQUE,
regionkey INTEGER,
comment VARCHAR(152) );6)删除实体完整性
删除国家实体的主码
alter table nation drop primary key;7)验证实体完整性
插入两条相同的记录
INSERT INTO Supplier ( suppkey , name , address , nationkey , phone , acctbal , comment )
VALUES (11,' test1',' test1 ',101,' 12345678',0.0,' test1' );
INSERT INTO Supplier ( suppkey , name , address , nationkey , phone , acctbal , comment )
VALUES (11,' test2 ',' test2 ', 102,' 23456789 ',0.0,' test2' );

2.参照完整性
(1)创建表时定义参照完整性
先定义地区表的实体完整性,再定义国家表上的参照完整性。
CREATE TABLE region(
regionkey INTEGER PRIMARY KEY,
name CHAR(25) ,
comment VARCHAR( 152)) ;

 CREATE TABLE nation(
nationkey INTEGER PRIMARY KEY,
name  CHAR(25),
comment VARCHAR( 152),
regionkey INTEGER, 
foreign key(regionkey) REFERENCES region( regionkey)
);

或者-----------------------------------------CREATE TABLE nation(
nationkey INTEGER PRIMARY KEY,
name CHAR(25) ,
regionkey INTEGER,
comment VARCHAR( 152)CONSTRAINT FK_ _Nation_ .regionkey FO
REIC
KEY ( regionkey) REFERENCES Region( region-
key));/*表级参照完整性*/-----------------------------------------2)创建表后定义参照完整性
定义国家表的参照完整性。
CREATE TABLE nation (
nationkey INTEGER PRIMARY KEY,
name CHAR(25) ,
regionkey INTEGER,
comment VARCHAR( 152)
)ALTER TABLE Nation ADD CONSTRAINT FK_nation_regionkey FOREIGN KEY(regionkey) REFERENCES region( regionkey);3)外码由多个属性组成
定义订单项目表的参照完整性。
CREATE TABLE partSupp (
partkey INTEGER,
suppkey INTEGER,
availqty INTEGER,
supplycost REAL,
comment VARCHAR( 199) ,
PRIMARY KEY( partkey , suppkey)) ;

---------------------------------
 CREATE TABLE lineitem (
orderkey INTEGER REFERENCES orders( orderkey),
partkey INTEGER REFERENCES part( partkey),
suppkey INTEGER REFERENCES supplier(suppkey),
linenumber INTEGER,
quantity REAL,
extendedprice REAL,
discount REAL,
tax REAL,
relurnflag CHAR(1),
linestatus CHAR(1),
shipdate DATE,
commitdate DATE,
receiptdate DATE,
shipinstruct CHAR ( 25),
shipmode CHAR( 10),
comment VARCHAR(44),
PRIMARY KEY(orderkey,linenumber),
FOREIGN KEY(partkey,suppkey) REFERENCES partsupp(partkey,suppkey));4)定义参照完整性的违约处理
定义国家表的参照完整性,当删除或修改被参照记录时,设置参照表中相应的记录值为空值
CREATE TABLE nation(
nationkey INTEGER PRIMARY KEY,
name CHAR(25),
regionkey INTEGER,
comment VARCHAR(152),
CONSTRAINT FK_nation_regionkey FOREIGN KEY(regionkey) REFERENCES region(regionkey) ON DELETE SET NULL ON UPDATE SET NULL);5)删除国家表的外码
ALTER TABLE nation DROP CONSTRAINT FK_ Nation_regionkey;6)验证参照完整性
插入一条国家记录,验证参照完整性是否起作用
/*插入一条国家记录,如果'1001'号地区记录不存在,违反参照完整性约束。*/
INSERT INTO Nation( nationkey , name , regionkey , comment )
VALUES ( 1001,' nation1 ', 1001 ,' commentl ' );





Je suppose que tu aimes

Origine blog.csdn.net/weixin_46220576/article/details/124323123
conseillé
Classement