网上商城数据库分析,设计1.网上商城网上商城类似于现实世界当中的商店,差别是利用电子商务的各种手段,达成从买到卖的过程的虚拟商店,从而减少中间环节,消除运输成本和代理中间的差价,造就对普通消费,和加大市场流通带来巨大的发展空间。
尽能的还消费者以利益,带动公司发展和企业腾飞,引导国民经济稳定快速发展,推动国内生产总值。
在现如今的WEB2.0时代,新的产业在不断衍生,电子商务的兴起,为互联网创业者提供了更多的机会。
本项目基于网上商城在现阶段及未来的发展而开发的电子商务应用,为消费者提供更好更快捷的服务,同时获得利润。
2.参考项目项目的设计离不开原有的成功的项目以及别的公司的案例,例如淘宝网、亚马逊、当当网以及新发展起来的麦考林、凡客诚品等等,虽然经营的商品及模式不同,但是在技术上有很多的相同点。
特别是在数据库的设计中,像用户信息表的设计,商品类别的设计,订单的设计等等,字段都是有很大程度上相同的,所以在实际的项目设计中可以参考这些成功的电子商务网站。
3.数据库设计数据库设计(Database Design)是指根据用户的需求,在某一具体的数据库管理系统上,设计数据库的结构和建立数据库的过程。
数据库设计是建立数据库及其应用系统的技术,是信息系统开发和建议中的核心技术。
由于数据库应用系统的复杂性,为了支持相关程序运行,数据库设计就变得异常复杂,因此最佳设计不可能一蹴而就,而只能是一种“反复探寻,逐步求精”的过程,也就是规划和结构化数据库中的数据对象以及这些数据对象之间关系的过程。
4.数据库设计的重要性良好的数据库设计对于一个高性能的应用程序非常重要,就像一个空气动力装置对于一辆赛车的重要性一样。
如果一辆汽车没有平滑的曲线,将会产生阻力从而变慢。
关系没有经过优化,数据库无法尽可能高效地运行。
应该把数据库的关系和性能看作是规范化的一部分。
除了性能以外的问题,就是维护的问题了,数据库应该易于维护。
这包括只存储数量有限的(如果有的话)重复性数据。
如果有很多的重复性数据,并且这些数据的一个实例发生一次改变(例如,一个名字的改变),这个改变必须对所有的其他的数据都进行。
为了避免重复,并且增强维护数据的能力,我们可以创建可能的值的一个表并使用一个键来引用该值。
在这种方式中,如果值改变了名字,这个改变只在主表中发生一次,所有的其他表的引用都保持不变。
提示:规范化指的是为了尽量避免重复性和不一致性而组织数据结构的过程。
例如,假设你负责维护一个学生数据库以及他们所注册的课程。
如果这些学生中的35个在同一个课堂中,让我们将这门课叫做Advanced Math(高等数学),课程的名字将会在表中出现35次。
现在,如果老师决定把这门课的名字改为Mathematics IV,我们必须修改35条记录以反映出新的课程名。
如果数据库设计为课程名出现在一个表中,只有课程ID号码和学生记录一起存储,那么要更改课程名称,我们就只需要改变一条记录而不是35条记录。
一个规划和设计良好的数据库的优点是众多的,它也证实了这样一个道理,前期做的工作越多,后面所要做的就越少。
在使用数据库的应用程序公开发布之后,还要对数据库进行重新设计,这是最糟糕的,然而,这确实会发生,并且代价高昂。
因此,在开始编写一个应用程序的代码之前,请花大量的时间来设计你的数据库。
在本章其余的部分中,我们将学习很多有关关系和规范化的内容,这是设计难题中最重要的两部分。
5.说明在一个完整的软件项目中,应该对需求分析,数据库设计,网页设计,JavaBean的设计等都是要精细考虑到的,由于时间及人力的关系,本次设计主要考虑数据库的设计,因为数据库设计的比较好,那么项目开发的进度也就比较快,可复用性也高,项目成功的几率就比较大。
6.开发环境JDK版本:JDK1.6Web应用服务器:Tomcat7.0及以上数据库:MySQL5.0及以上展示层:Struts2及以上业务层:Spring2.5及以上持久层:Hibernate3.0及以上7.数据库表在MySQLWorkbench中设计总的数据库表User字段名字段类型 说明 id int 主键 username varchar 用户名 password varchar 密码 password2 varchar 确认密码 email varchar 邮件 phonevarchar电话product 字段名字段类型说明id int 主键name varchar 商品名desc varchar 描述normalprice double 正常价格memberprice double 会员价格pdate date 上柜日期categoryID varchar 类别,引用category表的ID7.3商品信息类别表(category)category 字段名字段类型说明id int 主键name varchar 商品名desc varchar 描述7.4订单表(salesorder)salesorder 字段名字段类型说明id int 主键userid int 参照用户idaddr varchar 送货地址salesitem int 参照salesitem的idodate date 下单时间7.4订单详细表(salesitem)salesitem 字段名字段类型说明id int 主键productid int 参照product的idunitprice double 单价pcount int 数量orderid int 参照订单表的id7.6购物车表(shoppingcart)shoppingcart 字段名字段类型说明id int 主键userid int 参照user的idcartitem varchar 参照cartitem的id7.7购物车明细表(cartitem ) cartitem字段名 字段类型 说明 idint主键productid int 参照product 的id utilprice double 单价 pcountint数量7.8管理员表(admin ) admin字段名字段类型说明id int 主键username varchar 管理员姓名 password varchar 密码 levelvarchar 级别8.0SQL语句SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS,FOREIGN_KEY_CHECKS=0;SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL';CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci ;CREATE SCHEMA IF NOT EXISTS `new_schema1` ;USE `mydb` ;-- ------------------------------------------------------- Table `mydb`.`user`-- -----------------------------------------------------CREATE TABLE IF NOT EXISTS `mydb`.`user` (`id` INT NOT NULL AUTO_INCREMENT ,`username` VARCHAR(45) NOT NULL COMMENT '用户名' ,`password` VARCHAR(45) NOT NULL COMMENT '密码' ,`password2` VARCHAR(45) NOT NULL COMMENT '确认密码' ,`email` VARCHAR(45) NOT NULL COMMENT '电子邮件' ,`phone` VARCHAR(45) NOT NULL COMMENT '电话' ,`shoppingcart_id1` INT NOT NULL ,PRIMARY KEY (`id`, `username`, `shoppingcart_id1`) )ENGINE = InnoDBCOMMENT = '用户注册表' ;-- ------------------------------------------------------- Table `mydb`.`category`-- -----------------------------------------------------CREATE TABLE IF NOT EXISTS `mydb`.`category` (`id` INT NOT NULL AUTO_INCREMENT COMMENT '主键' ,`name` VARCHAR(45) NOT NULL COMMENT '商品名字' ,`desc` VARCHAR(200) NOT NULL COMMENT '描述' ,PRIMARY KEY (`id`) )ENGINE = InnoDB,COMMENT = '商品类别信息表' ;-- ------------------------------------------------------- Table `mydb`.`product`-- -----------------------------------------------------CREATE TABLE IF NOT EXISTS `mydb`.`product` (`id` INT NOT NULL AUTO_INCREMENT COMMENT '主键' , `name` VARCHAR(45) NOT NULL COMMENT '产品名字' ,`desc` VARCHAR(200) NOT NULL COMMENT '产品描述' ,`normalprice` DOUBLE NOT NULL COMMENT '正常价格' ,`memberprice` DOUBLE NOT NULL COMMENT '会员价格' ,`pdate` DATE NOT NULL COMMENT '上柜日期' ,`category` VARCHAR(45) NOT NULL COMMENT '类别ID' , PRIMARY KEY (`id`) ,INDEX `category` () ,CONSTRAINT `category`FOREIGN KEY ()REFERENCES `mydb`.`category` ()ON DELETE NO ACTIONON UPDATE NO ACTION)ENGINE = InnoDB,COMMENT = '产品信息表' ;-- ------------------------------------------------------- Table `mydb`.`salesorder`-- -----------------------------------------------------CREATE TABLE IF NOT EXISTS `mydb`.`salesorder` (`id` INT NOT NULL AUTO_INCREMENT COMMENT '主键' , `userid` INT NOT NULL COMMENT '用户ID' ,`addr` VARCHAR(45) NOT NULL COMMENT '配送地址' ,`salesitem` VARCHAR(45) NOT NULL COMMENT '订单明细' , `odate` DATE NOT NULL COMMENT '下单日期' ,PRIMARY KEY (`id`) )ENGINE = InnoDB,COMMENT = '订单表' ;-- ------------------------------------------------------- Table `mydb`.`salesitem`-- -----------------------------------------------------CREATE TABLE IF NOT EXISTS `mydb`.`salesitem` (`id` INT NOT NULL AUTO_INCREMENT COMMENT '主键' , `productid` INT NOT NULL COMMENT '产品ID' ,`unitprice` DOUBLE NOT NULL COMMENT '单价' ,`pcount` INT NOT NULL COMMENT '数量' ,`orderid` INT NOT NULL COMMENT '订单ID 引用salesorder' , PRIMARY KEY (`id`) ,INDEX `orderid` (`orderid` ASC) ,CONSTRAINT `orderid`FOREIGN KEY (`orderid` )REFERENCES `mydb`.`salesorder` (`id` )ON DELETE NO ACTIONON UPDATE NO ACTION)ENGINE = InnoDB,COMMENT = '订单明细表' ;-- ------------------------------------------------------- Table `mydb`.`cartitem`-- -----------------------------------------------------CREATE TABLE IF NOT EXISTS `mydb`.`cartitem` (`id` INT NOT NULL AUTO_INCREMENT ,`productid` INT NOT NULL ,`utilprice` DOUBLE NOT NULL ,`pcount` INT NOT NULL ,PRIMARY KEY (`id`) ,INDEX `productid` (`productid` ASC) ,CONSTRAINT `productid`FOREIGN KEY (`productid` )REFERENCES `mydb`.`product` (`id` )ON DELETE NO ACTIONON UPDATE NO ACTION)ENGINE = InnoDB;-- ------------------------------------------------------- Table `mydb`.`shoppingcart`-- -----------------------------------------------------CREATE TABLE IF NOT EXISTS `mydb`.`shoppingcart` (`id` INT NOT NULL AUTO_INCREMENT COMMENT '主键' , `userid` INT NOT NULL COMMENT '用户ID' ,`cartitem` VARCHAR(45) NOT NULL COMMENT '物品信息' , PRIMARY KEY (`id`) ,INDEX `userid` (`userid` ASC) ,CONSTRAINT `userid`FOREIGN KEY (`userid` )REFERENCES `mydb`.`user` (`id` )ON DELETE NO ACTIONON UPDATE NO ACTION,CONSTRAINT `cartitem`FOREIGN KEY ()REFERENCES `mydb`.`cartitem` ()ON DELETE NO ACTIONON UPDATE NO ACTION)ENGINE = InnoDB,COMMENT = '购物车表' ;-- ------------------------------------------------------- Table `mydb`.`admin`-- -----------------------------------------------------CREATE TABLE IF NOT EXISTS `mydb`.`admin` (`id` INT NOT NULL AUTO_INCREMENT COMMENT '主键' ,`username` VARCHAR(45) NOT NULL COMMENT '管理员姓名' , `password` VARCHAR(45) NOT NULL COMMENT '密码' ,`level` VARCHAR(20) NOT NULL COMMENT '级别' , PRIMARY KEY (`id`) )ENGINE = InnoDB,COMMENT = '管理员信息表' ;USE `new_schema1` ;-- ------------------------------------------------------- Placeholder table for view `new_schema1`.`view1`-- -----------------------------------------------------CREATE TABLE IF NOT EXISTS `new_schema1`.`view1` (`id` INT);-- ------------------------------------------------------- View `new_schema1`.`view1`-- -----------------------------------------------------DROP TABLE IF EXISTS `new_schema1`.`view1`;USE `new_schema1`;;SET SQL_MODE=@OLD_SQL_MODE;SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;。