数据库

使用PowerDesigner创建mysql数据库表图

*爱你&永不变心* 提交于 2020-03-25 17:21:28
使用 PowerDesigner 建数据库表。 一直很忙,没有时间写东西。这次搞点会声会色的,嘿嘿 此技能为项目经理必备技能。 本次主角: 1.在 workspace下建立一项目: physical data model类型的 在 DBMS处选择 mysql5.0 2.建立表 UML图: 在工具条上选择表格工具,创建出一个表来。 然后双击他,可以对其进行修改。 改名字为 User_Power 用户表,建立三个字段, ID为主键: 再建立一个表: Address_Power 地址表 3.现假设业务逻辑中用户和地址一一对应,那么地址的 ID是由用户的 ID来决定的 : 在工具栏中选择引用来建立两个表的关联关系: 这里需要根据业务逻辑来更改关联设置: OK,至此表设计已经完成。 4. 建立与数据库的连接。 在菜单条上,有一个 Database的选择项: 选择 connect…后弹出设置对话框: 在 Data source里选择第三个单选按钮,即 Connection profile:后,点击 Configure。会弹出如下窗口: 选择左上角的 Add Data Source,弹出如下窗口: 然后开始进行设置,基本按上图来设置,第一个是名字,随便取;第二个是保存这个配置文件的位置,放工作空间里就行了;第三个是描述,不用管;第四个是连接类型;第五个是数据库类型;第六个第七个过掉

缓存设计使用过程中需要注意的坑

断了今生、忘了曾经 提交于 2020-03-25 17:17:24
3 月,跳不动了?>>> 案例1,缓存和DB的数据不同步(不一致) 后台系统CRM更新产品数据到DB,产品系统收到异步消息通知后,更新最新数据到缓存。这是一个最常见的缓存应用场景,我相信很多团队都是这样用的。在这个Case里容易出现的问题在于,如果产品系统收到消息后服务挂掉了,缓存没有正常更新,就出现缓存与DB的数据不同步,前端系统一直不能读到最新数据,导致业务异常。 解决方案: 1. mq消费端创建个本地消息表,对于消费失败的消息进行重试 2. 系统要有缓存更新的报警机制,方便更新失败或者重试超时后,可以人工介入进行补偿。 案例2, 同时被两次请求update时,db数据被错误覆盖 CRM系统更新了某个用户的Profile, 保存更新数据库后,通过MQ通知用户系统更新缓存,由于是异步更新延迟,在缓存更新前,用户系统收到前端的请求,读取了当前缓存里的用户数据,做了修改,并更新到DB中。出现的结果就是数据库里的CRM的更新被错误覆盖。 解决方案:缓存里的数据有一个标志位可以作为更新数据库数据的依据(Update_time or Version), 如果缓存里数据时间与数据库时间不能匹配,意味着另外一个服务更新了该数据,那么就先从DB里读取最新数据版本,然后在新版本上提交数据。 案例3, 并发查询缓存中同一数据,如果缓存没命中,导致DB瞬时被打爆 做促销活动的时候

关于DateBase link(dbLINK)及同义词

牧云@^-^@ 提交于 2020-03-25 16:41:37
场景: 数据分布在不同的实例当中,当你需要在其中一个实例当中,需要联合其他实例进行联查数据时,就需要用到DataBase LINK, 借用网上找到的一幅图帮助理解 创建前: 要确认tnsnames.ora中配置 ,是否已经有了相关的配置,没有的话,要先配置好,式样直接仿照已有的去写 创建DB link的语法 create [PUBLIC] database link [name] connect to [username] IDENTIFIED BY [password] using '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = [ip])(PORT = [port])) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = xxx) ) )'; 留意:如果PUBILC 为选用,如果不选用,则仅为当前用户创建 实例: create database link link_test --link_test 这个是database link 的名称 connect to AAAA identified by BBBB --AAAA 这个是源数据库的用户名称 --BBBB 这个是源数据库的用户密码 using '(DESCRIPTION =

mysql-用户授权

怎甘沉沦 提交于 2020-03-25 15:42:22
mysql> grant 权限1,权限2,…权限n on 数据库名称.表名称 to 用户名@用户地址 identified by ‘连接口令’; 权限1,权限2,…权限n代表select,insert,update,delete,create,drop,index,alter,grant,references,reload,shutdown,process,file等14个权限。 当权限1,权限2,…权限n被all privileges或者all代替,表示赋予用户全部权限。 当数据库名称.表名称被 . 代替,表示赋予用户操作服务器上所有数据库所有表的权限。 用户地址可以是localhost,也可以是ip地址、机器名字、域名。也可以用’%'表示从任何地址连接。 ‘连接口令’不能为空,否则创建失败。 mysql>grant select,insert,update,delete,create,drop on vtdc.employee to joe@10.163.225.87 identified by ‘123′; 给来自10.163.225.87的用户joe分配可对数据库vtdc的employee表进行select,insert,update,delete,create,drop等操作的权限,并设定口令为123。 mysql>grant all privileges on vtdc

ThinkPHP5做微信开发,微信昵称带有表情,无法保存进数据库问题。

删除回忆录丶 提交于 2020-03-25 15:41:43
在一次微信开发中,出现了用户无法注册的问题,后来排查发现,是用户的昵称中带有表情,无法存进mysql数据库(mysql使用的是utf-8编码)。 在网上查询有以下几种解决方案: 1、把昵称在保存进数据库前,进行编码转换。 2、(1)把数据库中昵称的字段改为utf8mb4 (2)把tp5的数据库配置文件中的数据库默认编码(charset),有utf-8改为 utf8mb4。 后来使用的是第2种方法解决,第一种方法按道理说也可以解决。 来源: https://www.cnblogs.com/jianzhen/p/10242653.html

项目开发规范,数据库设计规范

核能气质少年 提交于 2020-03-25 15:35:00
1. 命名规范 定义这个规范的目的是让项目中全部的文档都看起来像一个人写的,添加可读性。降低项目组中由于换人而带来的损失。 (这些规范并非一定要绝对遵守,可是一定要让程序有良好的可读性) 1.1 namespace 的命名 namespace的名字应该都是由一个大写字母开头的单词组成,若由多个单词组成。每一个单词的首字母大写。 1.2 Class 的命名 Class 的名字必须由大写字母开头而其它字母都小写的单词组成。 比如: class Raster; 1.3 局部变量的命名 变量的名字必须用一个小写字母开头。后面的单词用大写字母开头。 1.4 Static 变量的命名 Static 变量的名字应该都大写,而且指出完整含义。 1.5 參数的命名 參数的名字必须和变量的命名规范一致。 1.6 数组的命名 数组应该总是用以下的方式来命名: byte[] buffer; 而不是: byte buffer[]; 1.7 代码凝视 类头部凝视 1.用文字说明代码的作用。并正确指出该代码的编写思路和逻辑方法; 1. 在每一个类的開始赋予一个凝视标头; 可參考:(至少须要这几项,Description:描写叙述该类功能。作者,时间。 ) /** * Description: 用户管理 * @Author : wjl * @Create Date: 2015 - 8 - 17 下午 4:06

Mybatis(一)Mybatis相关概念

跟風遠走 提交于 2020-03-25 13:33:54
1.1 传统的JDBC实现 public static void main(String[] args) { Connection connetion = null; PreparedStatement preparedStatement = null; ResultSet resultSet = null; try{ //加载数据库驱动 Class.forName("com.mysql.jdbc.Driver"); connetion = DriverManager.getConnetion("jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8","root","root"); //定义SQL语句 String sql = "Select * from user where username = ?"; //获取预处理statement preparedStatement = connection.preparedStatement(sql); preparedStatement.setString(1,"zbc"); resultSet = preparedStatement.executeQuery(); while (resultSet.next()) { int id = resultSet.getInt

面向过程式的数据库连接

风流意气都作罢 提交于 2020-03-25 13:22:18
3 月,跳不动了?>>> 1、mysql系列函数 --连接mysql的老函数,性能不佳,已经被mysqli替代 2、mysqli系列函数 --mysql系列的增强版,如果直接连接mysql数据库,性能最好 3、pdo抽象层 --抽象的数据库连接方法,它实现了一套代码,适配各种数据库(早就说过,除了mysql数据库以外,还有很多使用sql语句来操作的数据库,比如sql server、oracle数据库) 以上三种,如果你的框架只支持mysql数据库的话,用mysqli性能最佳,如果适应所有的sql数据库,用pdo 这里我们演示一下pdo的连接 $host='localhost'; //数据库主机名 $dbName='mengli'; //使用的数据库 $dsn="mysql:host=$host;dbname=$dbName"; //第一个参数,拼接一个dsn,dsn是一串包括了你想要连接的ip地址,以及数据库名字。因为是本地环境,所以ip填localhost或者127.0.0.1都行,如果是远程数据库,比如你实际工作的数据库,就是一串ip地址了。 $pdo = new pdo($dsn, 'root', 'root'); $sql = "SELECT * FROM user"; $sth = $pdo->prepare($sql); $sth->execute(); $result

数据库集群 MySQL主从复制

纵饮孤独 提交于 2020-03-25 11:42:58
MySQL主从复制 本节内容我们联系使用 MySQL的主从复制功能配置Master和Slave节点,验证数据MySQL的数据同步功能。 因为要使用多个 MySQL数据库,所以不建议在电脑上安装多个MySQL数据库,最好的办法是使用多个绿色版的MySQL数据库。 MariaDB数据库是MySQL创始人Michael 创建的 MySQL重要分支。由于Oracle 持有了 MySQL的版权,MySQL存在闭源的隐患,加之Oracle对MySQL的更新不太重视,所以业界许多公司纷纷采用了完全开源的MariaDB数据库。MariaDB建立在MySQL5.5版本上,所以MariaDB与MySQL的兼容性非常好,并且性能上也做出了很大的优化,社区活跃,软件版本更新迅速,包括谷歌、Facebook等企业纷纷改用MariaDB数据库。 Master数据库 首先把安装到C:\Program Files 里面的 MariaDB目录复制一份,放置的路径没有要求,但是尽量把数据库放在C盘或者D盘上面,改名DB1。因为这两个盘符的空间处在硬盘磁碟的外圈,所以线速度很快,数据读写速度也很理想。 DB1将要当做主库使用,创建my.ini文件,然后编辑文件内容。 [mysqld] # 数据库字符集 character_set_server = utf8 #MySQL 主机名 ( 只可以是数字 ) server_id

JAVA 连接数据库的步骤

若如初见. 提交于 2020-03-25 11:40:55
第一步:数据库驱动和数据量地址基本信息。 // MySQL 8.0 以下版本 - JDBC 驱动名及数据库 URL static final String JDBC_DRIVER = "com.mysql.jdbc.Driver"; static final String DB_URL = "jdbc:mysql://localhost:3306/RUNOOB"; // MySQL 8.0 以上版本 - JDBC 驱动名及数据库 URL //static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver"; //static final String DB_URL = "jdbc:mysql://localhost:3306/RUNOOB?useSSL=false&serverTimezone=UTC"; // 数据库的用户名与密码,需要根据自己的设置 static final String USER = "root"; static final String PASS = "123456"; 第二步:注册驱动 // 注册 JDBC 驱动 Class.forName(JDBC_DRIVER); 第三步:打开连接 // 打开链接 System.out.println("连接数据库..."); conn =