2-2 实体类与数据库设计
模块分类
1 前端展示系统
2 店家系统
3 超级管理员系统
ER 图
创建实体类
注意:实体类和数据库一对一的创建
创建数据库
刚开始用语句进行创建的但会报错:
修改:(表名是用键盘第一行第一列的点括起来的)
写数据库的语句还不太熟,要多加练习:
USE o2o;
CREATE TABLE `tb_local_auth`(
`local_auth_id` INT(10) NOT NULL AUTO_INCREMENT,
`user_id` INT(10) NOT NULL,
`username` VARCHAR(128) NOT NULL,
`password` VARCHAR(128) NOT NULL,
`create_time` datetime DEFAULT NULL,
`last_edit_time` datetime DEFAULT NULL,
PRIMARY KEY(`local_auth_id`),
UNIQUE KEY `uk_local_profile`(`username`),
CONSTRAINT `fk_localauth_profile` FOREIGN KEY(`user_id`) REFERENCES `tb_person_info`(`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
注意:mysql有两种时间类型,datetime和timestamp。区别:
1.DATETIME的日期范围是1001——9999年,TIMESTAMP的时间范围是1970——2038年。
2.DATETIME存储时间与时区无关,TIMESTAMP存储时间与时区有关,显示的值也依赖于时区。在mysql服务器,操作系统以及客户端连接都有时区的设置。
3.DATETIME使用8字节的存储空间,TIMESTAMP的存储空间为4字节。因此,TIMESTAMP比DATETIME的空间利用率更高。
4.DATETIME的默认值为null;TIMESTAMP的字段默认不为空(not null),默认值为当前时间(CURRENT_TIMESTAMP),如果不做特殊处理,并且update语句中没有指定该列的更新值,则默认更新为当前时间。
mysql数据库引擎有innoDB和MYISAM,主要区别与应用场景:
主要区别:
- 1).MyISAM是非事务安全型的,而InnoDB是事务安全型的。
- 2).MyISAM锁的粒度是表级,如多线程操作,一个线程在更新一行数据,则另一个线程会等待锁释放再更新,而InnoDB支持行级锁定,如果一个线程要更新第一行数据,另一个线程更新第二行数据,则可以并发执行。
- 3).MyISAM支持全文类型索引,而InnoDB不支持全文索引。
- 4).MyISAM相对简单,所以在效率上要优于InnoDB,小型应用可以考虑使用MyISAM。
- 5).MyISAM表是保存成文件的形式,在跨平台的数据转移中使用MyISAM存储会省去不少的麻烦。
- 6).InnoDB表比MyISAM表更安全,可以在保证数据不会丢失的情况下,切换非事务表到事务表(alter table tablename type=innodb)。
应用场景:
- 1).MyISAM管理非事务表。它提供高速存储和检索,以及全文搜索能力。如果应用中需要执行大量的SELECT查询,那么MyISAM是更好的选择。
- 2).InnoDB用于事务处理应用程序,具有众多特性,包括ACID事务支持。如果应用中需要执行大量的INSERT或UPDATE操作,则应该使用InnoDB,这样可以提高多用户并发操作的性能。