为其添加完整约束 create table 库存信息( 书号 nchar(10) PRIMARY KEY, 图书类别 nchar(20) not null, 图书数量 int not null, ) create table 图书信息( id int identity(1,1) primary key, 书号 nchar(10) unique, 图书名称 nchar(20) NOT NULL, 图书类别 nchar(20) NOT NULL, 图书出版社 nchar(20) NOT NULL, 图书价格 float not null, 图书页数 int not null )
时间: 2023-05-31 10:03:05 浏览: 50
create table 库存信息(
书号 nchar(10) PRIMARY KEY,
图书类别 nchar(20) not null,
图书数量 int not null,
foreign key (书号) references 图书信息(书号)
)
create table 图书信息(
id int identity(1,1) primary key,
书号 nchar(10) unique,
图书名称 nchar(20) NOT NULL,
图书类别 nchar(20) NOT NULL,
图书出版社 nchar(20) NOT NULL,
图书价格 float not null,
图书页数 int not null,
foreign key (书号) references 库存信息(书号)
)
相关问题
优化一下create table 图书信息( 书号 nchar(10) foreign key references 库存信息(书号), 图书名称 nchar(20) NOT NULL , 图书类别 nchar(20) NOT NULL , 图书出版社 nchar(20) NOT NULL, 图书价格 float not null, 图书页数 int not null ) create table 库存信息( 书号 nchar(10) PRIMARY KEY, 图书类别 nchar(20) not null, 图书数量 int not null ) insert into 图书信息 values ('001','水浒传','中国古代小说','新华出版社',45.2,540)
A:
可以做如下优化:
1. 将书号的数据类型改为char(10),这样可以更好的支持索引,提高查询效率。
2. 在库存信息表中添加索引,可以加快对库存信息的查询。
3. 需要在图书信息表中添加一个主键,建议使用自增列作为主键,方便操作和管理。
4. 在图书信息表中的书号列添加唯一性约束,避免重复数据的插入和更新。
5. 如果图书信息表和库存信息表的数据量很大,可以将它们分别存储在不同的物理磁盘上,减少磁盘读写的冲突,提高系统的性能。
如下为修改后的SQL语句:
create table 图书信息(
id int identity(1,1) primary key,
书号 char(10) unique,
图书名称 nchar(20) NOT NULL,
图书类别 nchar(20) NOT NULL,
图书出版社 nchar(20) NOT NULL,
图书价格 float not null,
图书页数 int not null
)
create table 库存信息(
书号 char(10) primary key,
图书类别 nchar(20) not null,
图书数量 int not null
)
-- 添加索引
create index idx_库存信息_书号 on 库存信息(书号)
-- 插入数据
insert into 图书信息(书号, 图书名称, 图书类别, 图书出版社, 图书价格, 图书页数) values ('001','水浒传','中国古代小说','新华出版社',45.2,540)
优化 create table 库存信息( 书号 nchar(10) PRIMARY KEY, 图书类别 nchar(20) not null, 图书数量 int not null )create table 销售信息( 销售单号 nchar(10) NOT NULL PRIMARY KEY, 书号 nchar(10) foreign key references 库存信息(书号), 顾客号 nchar(10) foreign key references 顾客信息(顾客号), 图书销售数量 int NOT NULL, 销售日期 date default (getdate()), 销售金额 float null default (0) ) insert into 销售信息 (销售单号,书号,顾客号,图书销售数量) values ('b2','001','1',2)
A:可以考虑以下优化:
1. 将图书类别改为图书类型,nchar(10)减少为nchar(4),减小存储空间。
2. 销售信息表中的图书数量重复存储了,可以直接从库存信息表中查询得到。
3. 销售金额可以根据销售数量和图书单价(从库存信息表中查询得到)计算得到,避免重复存储。
优化后的代码如下:
-- 库存信息表
create table 库存信息(
书号 nchar(10) PRIMARY KEY,
图书类型 nchar(4) not null,
图书单价 float not null
);
-- 销售信息表
create table 销售信息(
销售单号 nchar(10) NOT NULL PRIMARY KEY,
书号 nchar(10) foreign key references 库存信息(书号),
顾客号 nchar(10) foreign key references 顾客信息(顾客号),
图书销售数量 int NOT NULL,
销售日期 date default (getdate())
);
-- 插入数据
insert into 库存信息 (书号,图书类型,图书单价) values ('001','小说',20.0);
insert into 销售信息 (销售单号,书号,顾客号,图书销售数量) values ('b2','001','1',2);
-- 查询数据
select 库存信息.书号, 库存信息.图书类型, 库存信息.图书单价, 销售信息.图书销售数量,
销售信息.销售日期, 库存信息.图书单价*销售信息.图书销售数量 as 销售金额
from 库存信息, 销售信息
where 库存信息.书号 = 销售信息.书号;
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)