1. 程式人生 > >資料庫基本表建立 完整性約束 foreign Key

資料庫基本表建立 完整性約束 foreign Key

理解以下幾張表的內容,根據實際情況設計屬性名、資料型別、及各種完整性約束(primary key、foreign key、not null、unique、check),用資料定義語言實現,然後設計實驗資料驗證約束的效果,當操作違反了完整性約束條件時,資料庫管理系統是如何處理的。

1、建立資料庫S_T。

create database S_T
Use S_T

2、新建一張專業資訊表,該表至少包含專業號,專業名稱,專業負責人,專業簡介等屬性,根據以下專業資訊為每個屬性選擇合適的資料型別。

專業號

專業名稱

專業負責人

專業簡介

JK

電腦科學與技術

Null

要求:在建表的過程設定約束,根據實際情況選擇屬性設定主碼(primary key),唯一約束(unique)。

CREATE TABLE Major(
	Dno varchar(10) primary key,
	Dname varchar(20) NOT NULL unique,
	Dman varchar(20),
	DDisc text
);

3、新建一張學生資訊表,該表至少包含學號,姓名,性別,出生日期,專業,身份證號,聯絡方式等屬性,根據以下學生資訊為每個屬性選擇合適的資料型別。

學號

姓名

性別

出生日期

專業

身份證號

聯絡方式

09011101

李彤

1989-6-5

JK

33020319890605234X

654234

要求:在建表的過程設定約束,根據實際情況選擇屬性設定主碼(primary key),唯一約束(unique),為性別設定檢查約束(check)使該屬性只能取“男”或 “女”。

CREATE TABLE Student(
	Sno CHAR(8) primary key,
	Sname CHAR(20) NOT NULL,
	Ssex CHAR(20),
	Sbirth datetime,
	Smajor VARCHAR(10),
	Sidentity char(18) unique,
	Stel varchar(11),
	check (Ssex IN('男','女')),
	FOREIGN KEY(Smajor) REFERENCES Major(Dno)
);

4、新建一張課程資訊表,該表至少包含課程號,課程名稱,學分,開課學期等屬性,根據以下課程資訊為每個屬性選擇合適的資料型別。

課程號

課程名稱

學分

開課學期

10001

資料庫原理

3

5

要求:在建表的過程設定約束,根據實際情況選擇屬性設定主碼(primary key),為學分設定約束使該屬性取值範圍為1到10之間的整數。

CREATE TABLE Course(
	Cno CHAR(5) PRIMARY KEY,
	Cname VARCHAR(40) NOT NULL, /*不可設定為Unique*/
	Ccredit SMALLINT,
	Cbegin SMALLINT,
	CONSTRAINT C1 CHECK (Ccredit between 1 and 10)	
);

5、新建一張選課資訊表,該表至少包含學號,課程號,成績,基點等屬性,根據以下選課資訊為每個屬性選擇合適的資料型別。

學號

課程號

成績

基點

09011101

10001

89

3.0

要求:在建表的過程設定約束,根據實際情況選擇屬性設定主碼(primary key),為成績設定約束使該屬性取值範圍為0到100之間的整數。為基點設定約束使該屬性取值為0或者大於等於1的值。

CREATE TABLE SC(
	Sno CHAR(8) primary key,
	Cno CHAR(5),
	Grade SMALLINT,
	GPA float,
	FOREIGN KEY (Sno) REFERENCES Student(Sno),
	FOREIGN KEY (Cno) REFERENCES Course(Cno),
	CONSTRAINT C2 CHECK (Grade between 0 and 100),
	CONSTRAINT C3 CHECK (GPA =0 OR GPA >=1)
);

6、修改學生資訊表,選擇該表中合適的屬性設定外碼約束(foreign key),實現表間資料的參考完整性。

ALTER TABLE STUDENT 
	ADD CONSTRAINT C4 FOREIGN KEY (Smajor) REFERENCES Major(Dno) ;

7、修改選課資訊表,選擇該表中合適的屬性設定外碼約束(foreign key),要求允許級聯更新,但不允許級聯刪除。

ALTER TABLE SC 
	ADD CONSTRAINT C5 FOREIGN KEY (Sno) REFERENCES Student(Sno) 
	ON DELETE NO ACTION
	ON UPDATE CASCADE;

ALTER TABLE SC 
	ADD CONSTRAINT C6 FOREIGN KEY (Cno) REFERENCES Course(Cno) 
	ON DELETE NO ACTION
	ON UPDATE CASCADE;