資料庫實驗一---圖書管理的資料庫建立
根據調研選定實體及相應屬性畫出E-R圖
2、將E-R模型轉換為對應關係模型,並指出主碼和外碼
圖書book(書號,類別,出版社,作者,書名,定價,備註);
讀者reader(編號,姓名,單位,性別,電話);
借閱borrow(書號,讀者編號,借閱日期,還書日期)。
3. 建資料庫及表,定義各屬性的域 。並完成主碼、外碼的定義。
根據上面的表結構,要求:① 對每個屬性選擇合適的資料型別;② 定義每個表的主碼、是否允許空值和預設值等列級資料約束;③ 對每個表的名字和表中屬性的名字儘可能用英文符號標識。
實現相關約束(預習自學內容):①建立上述三個表的聯絡,即實現:借閱表與圖書表之間、借閱表與讀者表之間的外碼約束;② 實現讀者性別只能是“男”或“女”的約束等。
(1)新建資料庫
CREATE DATABASE Book_Reader_DB_20170513
CONTAINMENT = NONE
ON PRIMARY
(
NAME = 'Book_Reader_DB_20170513',
FILENAME = 'C:\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\Book_Reader_DB_20170513.mdf' ,
SIZE = 8192KB ,
MAXSIZE = 2048GB,
FILEGROWTH = 65536KB
)
LOG ON
(
NAME = 'Book_Reader_DB_20170513_log',
FILENAME = 'C:\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\Book_Reader_DB_20170513_log.ldf' ,
SIZE = 8192KB ,
MAXSIZE = 2048GB ,
FILEGROWTH = 65536KB
)
(2)新建圖書表
【操作語句】
create table Book
(
Bid char(
6) primary key,Btype nvarchar(10) not null,
Bname nvarchar(50) not null,
Bauthor nvarchar(20) not null,
Pressname nvarchar(30) not null,
Bprice float not null ,
Btip nvarchar(50)
)
(3)新建讀者表
【操作語句】
create table Reader
(
Rid char(8) primary key,
Rname nvarchar(10) not null,
Rsex nchar(2) not null check(Rsex='男' or Rsex='女'),
Rdepartment nvarchar(20) not null,
Rnumber char(11)
)
(4)新建借閱表
【操作語句】
create table RB
(
Rid char(8) foreign key references Reader(Rid),
Bid char(6) foreign key references Book(Bid),
BorrowDate datetime not null default getdate(),
ReturnDate datetime,
primary key(Rid, Bid)
)
4、使用inesert語句向表中插入適當資料
--向Reader表插入資料:
insert Reader values('2017258','東方','女','軟體學院','12345677654'),
('2017290','西門吹雪','男','軟體學院','24190520724'),
('2017250','上官','女','軟體學院','35729264967'),
('2017345','南宮問天','男','計算機學院','35705724064'),
('2017336','北冥雪','女','計算機學院','19036330639')
--向Book表插入資料:
insert Book values('111000','計算機','計算機組成原理','蓋茨','清華出版社',32.8,'出版於2012年'),
('111110','計算機','計算機網路','扎克','清華出版社',28.2,'出版於2015年'),
('111120','計算機','計算機發展史','艾比恩姆','清華出版社',30.6,'出版於2013年'),
('111119','資料庫','SQL Server從入門到精(fang)通(qi)','王琳','中國人民大學出版社',32.8,'出版於2012年'),
('111205','資料庫','MY SQL實踐','蘇銘','中國科技大學出版社',38.3,'出版於2016年'),
('111250','作業系統','Linux就該這麼學','託沃茲','北京大學出版社',32.1,null)
--向RB表(借閱表)插入資料:
insert RB values('2017258','111000','2018-10-28','2018-11-13'),
('2017258','111120','2018-10-28',null),
('2017290','111119','2018-10-25','2018-11-27'),
('2017250','111119','2018-10-24','2018-11-28'),
('2017336','111205','2018-10-28','2018-11-13'),
('2017345','111000','2018-10-28','2018-11-13'),
('2017345','111250','2018-10-10','2018-10-28')