2-2 实体类与数据库设计

模块分类

1 前端展示系统

2-2 实体类与数据库设计

2 店家系统

2-2 实体类与数据库设计

3 超级管理员系统

2-2 实体类与数据库设计 

ER 图

2-2 实体类与数据库设计

创建实体类

2-2 实体类与数据库设计

注意:实体类和数据库一对一的创建

创建数据库

2-2 实体类与数据库设计

刚开始用语句进行创建的但会报错:

2-2 实体类与数据库设计

修改:(表名是用键盘第一行第一列的点括起来的)

2-2 实体类与数据库设计

写数据库的语句还不太熟,要多加练习

2-2 实体类与数据库设计

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,这样可以提高多用户并发操作的性能。