資料庫設計題1講解與實現,從讀題到提交

2021-09-23 05:47:54 字數 3091 閱讀 2631

– i. 讀題,理解題,審題

– ii. 匯入資料【從excel,可以用命令方式,也可以用企業管理器嚮導方式】,分資料數,使用select len(***) as ***長度

select * from 學生及成績 order by 總評成績

select max(len(學號)) as 學號長度 from 學生及成績 --char(10)

select max(len(姓名)) as 姓名長度 from 學生及成績 --char(8) varchar(10)

select max(len(性別)) as 性別長度 from 學生及成績 --乙個字,可以不用 char(2)

select max(len(生源省)) as 生源省長度 from 學生及成績 --char(6) varchar(10)

select max(len(課程名稱)) as 課程名稱長度 from 學生及成績 --char(36) varchar(40)

select count(生源省) 人數,生源省 from 學生及成績

group by 生源省

order by 1 desc

select count(性別) 人數,性別 from 學生及成績

group by 性別

order by 1 desc

– iii. 分析出實體和實體之間的聯絡,找出實體的主碼

– iv. 得到相應的表:實體表和聯接表(不一定有,有的話一定就是三張表)

– v. 確定表的主鍵:唯一的可以做主鍵,如果沒有唯一的,則使用人工鍵【自增列,主鍵,系統自動管理】

create table 學生(

學號 char(10) primary key

,姓名 char(8) not null

,性別 char(2) not null default(『男』) check(性別=『男』 or 性別=『女』)

,生源省 char(6))go

create table 課程(

課程號 int primary key

,課程名稱 char(36) not null)go

create table 成績(

學號 char(10) references 學生(學號)

,課程號 int references 課程(課程號)

,總評成績 int check(總評成績》=0 and 總評成績<=100)

,primary key(學號,課程號))go

– (1)根據課程名稱查詢某門課程的全部成績;

create index ix_課程_課程名稱 on 課程(課程名稱)

go– (2)根據學生學號查詢某學生的全部課程成績;

–已經有主鍵索引,不需要再額外建立索引

– (3)根據學生姓名查詢某學生的全部課程成績;

create index ix_學生_姓名 on 學生(姓名)

go– (4)根據學生姓名和課程名稱查詢某學生的某門課程成績。

–已經都有索引存在,不用再額外建立了

– 匯入資料:

– 將excel表中的全部資料匯入到資料庫各表中。

select * from 學生及成績

select * from 學生

–匯入學生資料到學生表

insert into 學生

select distinct 學號,姓名,性別,生源省 from 學生及成績 order by 1

select * from 課程

–匯入課程資料到課程表

insert into 課程

select distinct 課程號,課程名稱 from 學生及成績 order by 1

select * from 成績

–匯入成績資料到成績表

insert into 成績

select 學號,課程號,總評成績 from 學生及成績 order by 1

– 建立名為「v_學生成績"的檢視:

– 要求開啟該查詢後,看到的內容與excel表中完全一致,包括:

– (1)各資料列間的前後順序及資料值;

– (2)總的資料行數;

– (3)資料行間的前後順序——excel表中資料行間的排序規則為:課程號公升序、成績降序、學號公升序。

create view v_學生成績

asselect top 100 percent

學生.學號,姓名,性別,生源省,課程.課程號,課程名稱,總評成績

from

學生join 成績 on 學生.學號=成績.學號

join 課程 on 成績.課程號=課程.課程號

order by

課程.課程號,總評成績 desc,學生.學號

goselect * from 學生及成績

select * from v_學生成績

– vi. 確定表上列的約束

– 1. 表自身必須有【主鍵】primary key,一般為簡單主鍵,聯接表可能為復合主鍵或是人工主鍵

– 2. 表之間必須有【外來鍵】,即關聯關係 foreign key,一般情況下是某個表的主鍵當成另乙個表的外來鍵,突出一列參考另一列資料

– 3. 某列上的預設值 default,如把生源省預設設為「四川」

– 4. 某列上的允不允許設為空 null/not null

– 5. 某列上的表示式約束 check(expression),如把性別約束在「男」和「女」兩個字上

– 6. 唯一約束與唯一索引【區別與聯絡】

– vii. 依據設計,建立庫,實現表

– 1. 庫名【題設給出】,表名【需自行設計,見名知義】,列名【題設給出】

– 2. 約束名【如果題設給出,則直接用;如果沒有給出,則參考這個格式:pk_表名_列名】

– viii. 清理,檢驗,備份,上交

drop table 學生及成績

go–  完全備份資料庫「學生成績」,備份檔案命名為「學生成績.bak」,將檔案「學生成績.bak」用winrar壓縮為「資料庫設計.rar」,上傳到指定的伺服器上。

–   單擊此處上傳「資料庫設計.rar」。

use master

gobackup database 學生成績 to disk=『d:\學生成績.bak』

godrop database 學生成績

go

資料庫設計與應用題 資料庫

每個使用者有 使用者編號 姓名 手機號 每個群有 編號 群名稱 每個帖子有 帖子編號 發帖時間 正文 每個群有唯一的使用者作為群主,乙個使用者可以擔任多個群的群主 每個帖子只屬於乙個群,每個帖子有唯一的發布者,每個群可以有多個帖子,每個使用者可以發布多個多個帖子 其中帶下劃線為實體的標識屬性。csd...

資料庫設計與應用題 資料庫技術

1 假定我們要為社交平台建立資料庫,儲存資訊如下 每個使用者有 使用者編號 姓名 手機號 每個群有 編號 群名稱 每個帖子有 帖子編號 發帖時間 正文 每個群有唯一的使用者作為群主,乙個使用者可以擔任多個群的群主 每個帖子只屬於乙個群,每個帖子有唯一的發布者,每個群可以有多個帖子,每個使用者可以發布...

mysql怎麼刷題 Mysql資料庫刷題1

1 查詢入職員工時間排名倒數第三的員工的所有資訊 create table employees emp no int 11 not null,birth date date not null,first name varchar 14 not null,last name varchar 16 no...