南郵資料庫實驗2 小型資料庫設計

2021-08-20 08:40:20 字數 4681 閱讀 4612

題目:自己設計乙個小型資料庫。

個人比較喜歡看電影,於是用python爬了豆瓣top250的電影,做了乙個關於電影的小型資料庫,這裡只舉一小部分作為例子。

關係模式:

電影名稱關係模式

title(mno,mname)

電影評分關係模式

rating(mno,mscore)

電影標籤關係模式

tag(mno,mtag)

演員關係模式

actor(name,birth,star,blood)

建立資料表:

create table title(

mno char(10) primary key,

mname char(50) unique,

);create table rating(

mno char(10) primary key,

mscore float(10),

);create table tag(

mno char(10) primary key,

mtag char(20),

);

插入資料:

insert into title(mno,mname)

values

(1,'肖申克的救贖'),

(2,'霸王別姬'),

(3,'這個殺手不太冷'),

(4,'阿甘正傳'),

(5,'美麗人生'),

(6,'千與千尋'),

(7,'鐵達尼號'),

(8,'辛德勒的名單'),

(9,'盜夢空間'),

(10,'機械人總動員');

select * from title

insert into rating(mno,mscore)

values

(1,9.6),

(2,9.5),

(3,9.4),

(4,9.4),

(5,9.5),

(6,9.3),

(7,9.3),

(8,9.4),

(9,9.3),

(10,9.3);

insert into tag(mno,mtag)

values

(1,'犯罪'),

(2,'同性'),

(3,'犯罪'),

(4,'劇情'),

(5,'劇情'),

(6,'動畫'),

(7,'災難'),

(8,'劇情'),

(9,'科幻'),

(10,'動畫');

(1)選擇評分大於等於9.4的電影;

select title.mname,rating.mscore

from title,rating

where title.mno=rating.mno and mscore>=9.4;

(2)選擇分類為'劇情'的電影;

select title.mname,tag.mtag

from title,tag

where title.mno=tag.mno and mtag='劇情';

(3)更新第十部電影的分類為'科幻',評分為9.1;

update tag

set mtag='科幻'

where mno=10;

update rating

set mscore=9.1

where mno=10;

(4)選擇排名第10的電影;

select mname,mtag,mscore

from title,tag,rating

where title.mno=10 and tag.mno=10 and rating.mno=10;

(5)自然連線;

select title.mno,title.mname,rating.mscore,tag.mtag

from title,rating,tag

where title.mno=rating.mno and rating.mno=tag.mno;

(6)刪除排名第十的電影;

delete

from title

where title.mno=10;

delete

from rating

where rating.mno=10;

delete

from tag

where tag.mno=10;

select title.mno,title.mname,rating.mscore,tag.mtag

from title,rating,tag

where title.mno=rating.mno and rating.mno=tag.mno;

完整程式:

create database ***;

create table title(

mno char(10) primary key,

mname char(50) unique,

);create table rating(

mno char(10) primary key,

mscore float(10),

);create table tag(

mno char(10) primary key,

mtag char(20),

);insert into title(mno,mname)

values

(1,'肖申克的救贖'),

(2,'霸王別姬'),

(3,'這個殺手不太冷'),

(4,'阿甘正傳'),

(5,'美麗人生'),

(6,'千與千尋'),

(7,'鐵達尼號'),

(8,'辛德勒的名單'),

(9,'盜夢空間'),

(10,'機械人總動員');

select * from title

insert into rating(mno,mscore)

values

(1,9.6),

(2,9.5),

(3,9.4),

(4,9.4),

(5,9.5),

(6,9.3),

(7,9.3),

(8,9.4),

(9,9.3),

(10,9.3);

insert into tag(mno,mtag)

values

(1,'犯罪'),

(2,'同性'),

(3,'犯罪'),

(4,'劇情'),

(5,'劇情'),

(6,'動畫'),

(7,'災難'),

(8,'劇情'),

(9,'科幻'),

(10,'動畫');

--選擇評分大於等於9.4的電影

select title.mname,rating.mscore

from title,rating

where title.mno=rating.mno and mscore>=9.4;

--選擇分類為'劇情'的電影

select title.mname,tag.mtag

from title,tag

where title.mno=tag.mno and mtag='劇情';

--更新第十部電影的分類為'科幻',評分為9.1

update tag

set mtag='科幻'

where mno=10;

update rating

set mscore=9.1

where mno=10;

--選擇排名第10的電影

select mname,mtag,mscore

from title,tag,rating

where title.mno=10 and tag.mno=10 and rating.mno=10;

--自然連線

select title.mno,title.mname,rating.mscore,tag.mtag

from title,rating,tag

where title.mno=rating.mno and rating.mno=tag.mno;

--刪除排名第十的電影

delete

from title

where title.mno=10;

delete

from rating

where rating.mno=10;

delete

from tag

where tag.mno=10;

select title.mno,title.mname,rating.mscore,tag.mtag

from title,rating,tag

where title.mno=rating.mno and rating.mno=tag.mno;

資料庫(實驗2 資料庫表)

建立資料庫 建立資料庫資料檔案 create database testbase2 on name testbase2 data,filename d 張小山資料庫 lianxi2 testbase2 data.mdf size 5mb,maxsize 50mb,filegrowth 20 建立資料...

資料庫實驗2

1.dbms 登入帳號管理 create login sqluser with password pswdforuser 1 create login sqluser2 with password pswdforuser 123 create login uselessuser with passw...

資料庫 資料庫設計正規化

在關聯式資料庫中的關係是要滿足一定要求的,滿足不同程度要求為不同正規化,越高的正規化資料庫冗餘越小。但是有些時候一昧的追求正規化減少冗餘,反而會降低資料讀寫的效率,這個時候就要反正規化,利用空間來換時間。目前關聯式資料庫有六種正規化 第一正規化 1nf 第二正規化 2nf 第三正規化 3nf 巴斯 ...