大作业1: 题目:仿当当网购物系统数据库设计与实现(2人一组)。
要求:
1.数据库各数据对象的设计与实现:表、约束、完整性体现、查询、视图,要求用合理的数据体现。
2.文档:二人的完成过程,包括各自思考的内容,二人的讨论记录,最终的结论,要分条列出,不要写成流水账,要用书面语,不能口语化。
数据库设计过程中,主要有5张表,依次是用户表,图书表,图书类别表,订单表,订单明细表。
字段名 | 字段类型 | 默认 | 可为空 | 字段定义 | 备注 |
---|---|---|---|---|---|
Userid | int | 否 | 用户编号 | 主键,自增长 | |
userName | varchar(255) | 否 | 用户名 | ||
passeord | varchar(255) | 否 | 用户密码 | ||
sex | Varchar(4) | 是 | |||
age | int | 是 |
表1-1用户表
字段名 | 字段类型 | 默认 | 可为空 | 字段定义 | 备注 |
---|---|---|---|---|---|
categoryId | int | 否 | 管理员编号 | 主键 | |
categoryName | varchar(255) | 否 | 用户名 | 唯一 |
表1-2图书类别表
字段名 | 字段类型 | 默认 | 可为空 | 字段定义 | 备注 |
---|---|---|---|---|---|
bookId | int | 否 | 图书编号 | 主键 | |
BookName | varchar(255) | 否 | 书名 | ||
Price | float | 否 | 价格 | ||
Picture | varchar(255) | 否 | 图书照片称 | ||
CategoryId | Int | 否 | 图书类别编号 | 外键 |
表1-3图书表
字段名 | 字段类型 | 默认 | 可为空 | 字段定义 | 备注 |
---|---|---|---|---|---|
orderId | int | 否 | 图书编号 | 外键 | |
userid | varchar(255) | 否 | 书名 | 外键 | |
orderdate | varchar(255) | 否 | 时间 |
表1-4订单表
字段名 | 字段类型 | 默认 | 可为空 | 字段定义 | 备注 |
---|---|---|---|---|---|
Orderitemid | int | 否 | 订单明细编号 | 主键 | |
bookid | int | 否 | 图书编号 | 外键 | |
orderid | int | 否 | 订单编号 | 外键 | |
Quantity | Int | 否 | 数量 |
表1-5订单明细表
use [master]
go
if exists(select * from sysdatabases where name='bookStore')
drop database bookStore;
go
create database bookStore
ON PRIMARY
(
name='bookStore_data',
-- 主数据文件的物理名称
filename='D:\bookStore_data.mdf',
--主数据文件的初始大小
size=5mb,
-- 主数据文件增长的最大值
maxsize=100mb,
--主数据文件的增长率
filegrowth=20%
)
LOG ON
(
--日志文件的具体描述
--日志文件的逻辑名称
name='bookStore_log',
--日志文件的物理名称
filename='D:\bookStore_log.ldf',
--日志文件的初始大小
size=3mb,
--日志文件的大小
filegrowth=1mb
)
go
use bookStore;
create table catalog(
catalogid int identity(1,1) not null,
catalogname varchar(20) not null,
primary key(catalogid)
);
create table book(
bookid int identity(1,1) primary key not null,
catalogid int not null,
bookname varchar(20) not null,
price int not null,
picture varchar(30) not null,
foreign key(catalogid) references catalog(catalogid) on delete no action on update cascade
);
create table users(
userid int identity(1,1) primary key not null,
username varchar(20) not null,
password varchar(20) not null,
sex varchar(4),
age int,
);
create table orders(
orderid int identity(1,1) primary key not null,
userid int not null,
orderdate datetime not null,
foreign key (userid) references users(userid) on delete no action on update cascade
);
create table orderitem(
orderitemid int identity(1,1) primary key not null,
bookid int not null,
orderid int not null,
quantity int not null,
foreign key (bookid)references book(bookid) on delete no action on update cascade,
foreign key (orderid)references orders(orderid) on delete no action on update cascade,);
1、订单明细视图
create view ordersItemPrice
as
select users.username as 用户名,bookname as 图书名称,price as 单价,orderitem.quantity as 数量,(book.price*orderitem.quantity) as 合计, orders.orderdate as 时间
from users,orders,orderitem,book
where users.userid=orders.userid and orderitem.orderid=orders.orderid and orderitem.bookid=book.bookid;
2、订单总价视图
create view ordersTotalPrice
as
select users.username as 用户名 ,orders.orderid as 订单编号 ,sum(book.price*orderitem.quantity) as 应付金额, orders.orderdate as 时间
from users,orders,orderitem,book
where users.userid=orders.userid and orderitem.orderid=orders.orderid and orderitem.bookid=book.bookid
group by users.username,users.userId,orders.orderid,orders.orderdate;