打算好好看看JPetStore,毕竟在新公司也是做网上商城,之前没接触过。为了更好的了解JPetStore,先看看数据库结构。并不是JPetStore的数据库设计得很好从而具有研究价值,只是为了熟悉,所以大家选择性的看吧!
1.商品供应商:每个具体的商品(ITEM)有不同的供应厂商:
create table if not exists supplier (
suppid int not null,--primary key
name varchar(80) null,--name
status varchar(2) not null,
addr1 varchar(80) null,
addr2 varchar(80) null,
city varchar(80) null,
state varchar(80) null,
zip varchar(5) null,
phone varchar(80) null,
primary key (suppid))
type=innodb
min_rows=0
max_rows=1000
pack_keys=default
row_format=default
comment='cadastro de fornecedores';
此表没什么好解释的,基本一看都明白。只是从数据库设计角度来讲有的数据类型和范围还需要斟酌。比如zip可以设为int,phone不必要80个字符等等。
2.登录信息表,只保存用户名(即登录名)和密码,也没什么可解释。其中userid和account表的userid关联:
create table if not exists signon (
username varchar(25) not null,
password varchar(25) not null,
primary key (username))
type=innodb
min_rows=0
max_rows=1000
pack_keys=default
row_format=default
comment='cadastro de usuios';
3.账号表:
create table if not exists account (
userid varchar(80) not null,
email varchar(80) not null,
firstname varchar(80) not null,
lastname varchar(80) not null,
status varchar(2) null,--状态:'OK' or 'AC'
addr1 varchar(80) not null,
addr2 varchar(40) null,
city varchar(80) not null,
state varchar(80) not null,
zip varchar(20) not null,
country varchar(20) not null,
phone varchar(80) not null,
primary key (userid) )
type=innodb
min_rows=0
max_rows=1000
pack_keys=default
row_format=default
comment='cadastro de contas';
4.用于概述信息:包括用户id、语言偏好、喜欢的目录、是否开启List、是否开启Banner。用户账户页面可以显示和配置这些设置,方便个性化设置。
create table if not exists profile (
userid varchar(80) not null,
langpref varchar(80) not null,
favcategory varchar(30),
mylistopt bool,
banneropt bool,
primary key (userid) )
type=innodb
pack_keys=default
row_format=default
comment='cadastro de perfis';
5.banner,原意“旗帜”,存放着喜欢的类别和图片地址:
create table if not exists bannerdata (
favcategory varchar(80) not null,
bannername varchar(255) null,
primary key (favcategory))
type=innodb
pack_keys=default
row_format=default
comment='banner data';
6.订单表:
create table if not exists orders (
orderid int not null,
userid varchar(80) not null,
orderdate date not null,
shipaddr1 varchar(80) not null,
shipaddr2 varchar(80) null,
shipcity varchar(80) not null,
shipstate varchar(80) not null,
shipzip varchar(20) not null,
shipcountry varchar(20) not null,
billaddr1 varchar(80) not null,
billaddr2 varchar(80) null,
billcity varchar(80) not null,
billstate varchar(80) not null,
billzip varchar(20) not null,
billcountry varchar(20) not null,
courier varchar(80) not null,--送货员
totalprice decimal(10,2) not null,
billtofirstname varchar(80) not null,
billtolastname varchar(80) not null,
shiptofirstname varchar(80) not null,
shiptolastname varchar(80) not null,
creditcard varchar(80) not null,
exprdate varchar(7) not null,
cardtype varchar(80) not null,
locale varchar(80) not null,
primary key (orderid) )
type=innodb
pack_keys=default
row_format=default
comment='cadastro de pedidos';
7.订单状态:
create table if not exists orderstatus (
orderid int not null,--主键
linenum int not null,--int型与业务逻辑无关的数据,用于与orderid组成复合主键
timestamp date not null,--时间
status varchar(2) not null,--状态
primary key (orderid, linenum) )
type=innodb
pack_keys=default
row_format=default
comment='status de pedidos';
8.LINEITEM:订单中包含的商品条目,一个订单可以包含多个具体的商品。比如说,一次网上购物生成一条订单(假设订单号为12492),但是这条订单中包含多本书,比如有《Java与模式》2本,《高性能MySQL》一本和《编译原理》3本。
create table if not exists lineitem (
orderid int not null,--订单id
linenum int not null,--无实际意义,用于与orderid组成复合主键
itemid varchar(10) not null,--具体的商品
quantity int not null,--订购该商品的数量
unitprice decimal(10,2) not null,--该具体商品单价*数量所得到的价钱,比如3 --本编译原理的价钱。注意:这不是总的价钱。
primary key (orderid, linenum) )
type=innodb
pack_keys=default
row_format=default
comment='line item';
9.分类:
create table if not exists category (
catid varchar(10) not null,--主键
name varchar(80) null,--类别名称
descn varchar(255) null,--类别描述
primary key (catid) )
type=innodb
pack_keys=default
row_format=default
comment='categorias';
10.商品:
create table if not exists product (
productid varchar(10) not null,
category varchar(10) not null,
name varchar(80) null,
descn varchar(255) null,
primary key (productid) )
type=innodb
pack_keys=default
row_format=default
comment='categorias';
为商品创建类别、商品名的索引
alter table product
add index productcat(category);
alter table product
add index productname(name);
为目录添加索引:
alter table category
add index ixcategoryproduct(catid);
--商品表添加商品类别外键关联,级联删除和更新:
alter table product add foreign key (category)
references category(catid)
on delete restrict
on update restrict;
11.商品详细信息表:存储着商品一些在显示上相对不重要(可以通过延迟加载访问)、变化可能性大(各种attribute)、占用空间大的字段,属于表的纵向切割。
create table if not exists item (
itemid varchar(10) not null,
productid varchar(10) not null,--外键,关联商品id
listprice decimal(10,2) null,--???
unitcost decimal(10,2) null,--单价
supplier int null,--外键,关联供货商
status varchar(2) null,--状态
attr1 varchar(80) null,
attr2 varchar(80) null,
attr3 varchar(80) null,
attr4 varchar(80) null,
attr5 varchar(80) null,
primary key (itemid) )
type=innodb
pack_keys=default
row_format=default
comment='itens';
alter table item
add index itemprod(productid);
alter table item add foreign key (productid)
references product(productid)
on delete restrict
on update restrict;
alter table item add foreign key (supplier)
references supplier(suppid)
on delete restrict
on update restrict;
12.库存表:
create table if not exists inventory (
itemid varchar(10) not null,--商品id
qty int not null,--库存数量
primary key (itemid) )
type=innodb
pack_keys=default
row_format=default
comment='inventory';
13.工具表,用于产生序列:
create table if not exists sequence (
name varchar(30) not null,
nextid int not null,
primary key (name) )
type=innodb
pack_keys=default
row_format=default
comment='inventory';
最后,提供一个链接可以看更加详细的介绍:http://www.docstoc.com/docs/19677923/petstore-%E6%95%B0%E6%8D%AE%E6%A8%A1%E5%9E%8B%E5%88%86%E6%9E%90
分享到:
相关推荐
《深入解析jpetstore系统架构图:从...通过深入解析这张架构图,我们不仅能学到如何构建一个结构清晰、功能完善的企业级应用,还能理解各种技术框架在实际项目中的应用策略,为自己的项目开发提供有益的参考和启示。
在JpetStore中,我们可以通过Spring的数据访问抽象层进行数据库操作,这既简化了数据库操作,又保持了与具体数据库实现的解耦。 Spring的测试支持也是其强大之处。JpetStore项目中的单元测试和集成测试可以利用...
JPetStore是基于iBATIS实现的一个在线宠物商店示例,它的设计和实现为开发者提供了学习数据库驱动应用开发的良好实践。 首先,让我们深入了解一下iBATIS框架。iBATIS的核心理念是将SQL与Java代码分离,通过XML或...
同时,项目中包含两个SQL文件,用于创建jpetstore所需的数据库表结构,部署时需要先导入这两个文件。 4. **Tomcat服务器** Tomcat是一个流行的开源Java Servlet容器,用于运行Java Web应用。jpetstore设计为部署在...
JPetStore划分成了多个模块,采取了松耦合的设计架构,允许存在多个数据源及EIS进行信息交互。它的结构相对简单,总共包括4个部分: • 购物站点 • 管理。如:销售统计,手工接受/拒绝订单 • 订单处理 通过JMS接受...
【压缩包子文件的文件名称列表】"org.springframework.samples.jpetstore"暗示了项目结构,这通常包含Spring的包结构,表明源代码可能按照Spring的约定进行组织,同时也反映了jpetstore的模块化设计。 综上所述,这...
《JPetStore数据库应用实践与多数据库环境切换详解》 JPetStore是一个经典的Java Web示例项目,它展示了如何使用Struts、Hibernate和Spring等开源框架构建一个完整的网上购物系统。这个项目以其清晰的架构和丰富的...
在jpetstore项目中,这个目录可能包含了用于初始化数据库的SQL脚本,这些脚本定义了项目所需的表结构和索引。 2. **devlib**:这个目录可能包含了项目开发过程中需要用到的库文件或者依赖,比如JAR包。这些库文件是...
描述中的链接指向了ITEYE上的一篇博客文章,虽然内容没有给出,但通常这类博客会包含对JPetStore的详细解析,包括项目的结构、主要组件、配置文件的解读以及关键代码的解释。 标签 "源码" 暗示我们可以从JPetStore...
为了存储和检索数据,JPetStore会使用JDBC来连接和操作数据库。JDBC是Java中用于访问数据库的标准API,可以用来执行SQL查询,插入、更新或删除数据。 **5. 数据库设计** 在JPetStore中,可能有一个包含宠物类别、...
这些脚本用于在数据库中初始化JPetStore所需的数据结构。通常,这些脚本会定义表、索引、视图等,并为应用程序提供数据存储的基础。 2. **devlib**:这个目录可能包含开发时所需的库文件,如JAR包,它们可能包括...
在JPetStore4.0.5中,Ibatis负责处理数据的CRUD(Create、Read、Update、Delete)操作,实现了模型与数据库之间的解耦,提高了代码的可读性和可维护性。 Struts,作为一款经典的MVC(Model-View-Controller)框架,...
**标题解析:** "jpetstore源代码" 这个标题指的是一个开源项目...通过研究jpetstore源代码,开发者或学习者可以深入了解Java Web应用的开发流程,掌握各种Java EE技术的实践应用,以及如何组织和管理复杂项目的结构。
`jpetstore`通常会有一个清晰的目录结构,包含`src/main/java`(业务逻辑代码)、`src/main/resources`(配置文件)、`src/main/webapp`(Web应用资源)等。`src/main/webapp`下会有`WEB-INF`目录,其中包含`web....
在 jpetstore 中,Hibernate 负责与数据库的交互,将对象模型映射到关系数据库。通过定义实体类和映射文件,Hibernate 可以自动处理对象的持久化操作,如增删查改,大大简化了数据库操作的复杂度。 在具体的 ...
JPetStore是iBatis官方提供的一个经典示例项目,用于展示如何使用iBatis进行数据库交互。这个例子是一个在线宠物商店,涵盖了用户管理、商品分类、购物车等功能,是学习iBatis的绝佳起点。 **3. iBatis配置** ...
在JPetStore中,Hibernate替代了原来的Ibatis,使得开发者可以直接通过对象模型来操作数据库,减少了SQL的编写工作,提高了代码的可读性和可维护性。 **JPetStore项目:** JPetStore是一个经典的示例应用,用于演示...
5. **数据库连接**:通常,JPetStore会使用如MySQL或Oracle这样的关系型数据库来存储产品信息、用户订单等数据。 **项目结构** - **www.pudn.com.txt**:可能是一个文档链接或者说明文件,通常不包含源代码,而是...
JPetStore5是一个优秀的学习资源,它涵盖了J2EE开发的多个重要方面,包括Web编程、数据库操作、服务组件和框架应用等。通过研究这个项目,开发者可以深入理解J2EE的架构和最佳实践,同时学习如何解决实际开发中遇到...