GaussDB(for MySQL) 模拟银行核心数据库,从模型设计到SQL实操,沉浸式DBA体验

举报
高斯小助手 发表于 2023/11/21 12:08:51 2023/11/21
【摘要】 本次体验主要以金融行业为场景,设计数据库模型,体验华为云GaussDB(for MySQL)构建金融场景下的数据库,掌握数据库中的表创建和查询操作。

一、实验准备

1.注册开通华为云账号,并完成实名认证;

2.点击链接/扫码完成报名,领取华为云资源代金券(先到先得!);

3.开通华为云GaussDB(for MySQL)数据库资源:

    • 3.1 进入华为云官网https://www.huaweicloud.com/
    • 3.2 购买云数据库GaussDB(for MySQL)资源;
    • 3.3 购买规格如下
      • 计费模式:按需付费
      • 区域:华北-北京四
      • 可用区类型:单可用区
      • 性能规格:通用型
      • CPU架构:x86;2vCPUs|8GB
      • 管理员密码:自行设置
      • 其余各项默认,点击“立即购买”,确认后“提交”;
    • 3.4 提交后“返回云数据库GaussDB(for MySQL)列表”;
    • 3.5 等待创建完成,在等待创建的时间,可以先了解下该实验的模型和场景:

二、实验模型介绍

1.业务背景

    • 本次体验主要以金融行业为场景,设计数据库模型,体验华为云GaussDB(for MySQL)构建金融场景下的数据库,掌握数据库中的表创建和查询操作。
    • 金融数据模型参考信息:
    • 假设A市C银行为了方便对银行数据的管理和操作,引入了华为GaussDB(for MySQL)数据库。针对C银行的业务,本实验主要将对象分为客户、银行卡、理财产品、保险、基金和资产。因此,针对这些数据库对象,本实验假设C银行的金融数据库存在着以下关系:客户可以办理银行卡,同时客户可以购买不同的银行产品,如资产,理财产品,基金和保险。那么,根据C银行的对象关系,本实验给出了相应的关系模式和ER图,并对其进行较为复杂的数据库操作。

2.E-R

3.关系模式

    • 对于C银行中的5个对象,分别建立属于每个对象的属性集合,具体属性描述如下:
      • 客户(客户编号、客户名称、客户邮箱,客户身份证,客户手机号,客户登录密码)
      • 银行卡(银行卡号,银行卡类型)
      • 理财产品(产品名称,产品编号,产品描述,购买金额,理财年限)
      • 保险(保险名称,保险编号,保险金额,适用人群,保险年限,保障项目)
      • 基金(基金名称,基金编号,基金类型,基金金额,风险等级,基金管理者)
    • 对象之间的关系:
      • 一个客户可以办理多张银行卡
      • 一个客户可以购买多个理财产品,同一类理财产品可由多个客户购买
      • 一个客户可以购买多个基金,同一类基金可由多个客户购买
      • 一个客户可以购买多个保险,同一类保险可由多个客户购买
    • 根据关系分析,设计关系模式如下:
    • 说明:
    • 由于一个客户可以办理多张银行卡,所以银行卡表引用客户表的客户编号作为外键。
    • 由于一个客户可以购买多个理财产品,同一类理财产品可由多个客户购买。所以生成关系表——资产表。资产表引用客户表的商品编号作为外键,引用理财产品表的产品编号作为外键,并且添加商品状态、商品数量、商品收益和购买时间等属性。
    • 客户和保险、客户和基金的关系同理,所以资产表同样作为生成的关系表,修改资产表的理财产品编号为商品编号,商品编号引用自理财产品表、保险和基金表的编号。

4.物理模型

    • 对象及属性对应的编号为:
      • Client(c_idc_namec_mailc_id_cardc_phonec_password)
      • bank_card(b_numberb_typeb_c_id)
      • finances_product(p_namep_idp_descriptionp_amountp_year)
      • insurance(i_namei_idi_amounti_personi_yeari_project)
      • fund(f_namef_idf_typef_amountrisk_levelf_manager)
      • property(pro_id,pro_c_idpro_pif_idpro_typepro_statuspro_quantitypro_incomepro_purchase_time)
      • 说明:资产表(property)中由于商品编号(pro_pif_id)字段引用自理财产品表、保险和基金表的id字段,为了防止三商品id字段相互冲突,添加商品类型(pro_type)字段区分三种商品。并且资产表添加资产编号(pro_id)字段作为主键。
    • 1-1 Client(客户)表
    • 表1-2 bank_card(银行卡)表
    • 表1-3 finances_product(理财产品)信息表
    • 表1-4 insurance(保险)表
    • 表1-5 fund(基金)表
    • 表1-6 property(资本)表

接下来开始基于上诉模型创建数据库,由于时间关系,仅展示部分操作:

三、实操部分

1.初始化数据库

    • 1.1 登录数据库
    • 1.2 输入用户名和密码,测试连接后登录
    • 1.3 点击“新建数据库”,自定义数据库名称,例finance,后确认
    • 1.4 点击“SQL查询”进入SQL交互页面

2.创建表操作

    • 2.1 删除表client:输入以下代码,点击“执行SQL(F8)”;
DROP TABLE IF EXISTS client;
    • 2.2 创建表client:输入以下代码,点击“执行SQL(F8)”;
CREATE TABLE client

(

c_id INT PRIMARY KEY,

c_name VARCHAR(100) NOT NULL,

c_mail CHAR(30) UNIQUE,

c_id_card CHAR(20) UNIQUE NOT NULL,

c_phone CHAR(20) UNIQUE NOT NULL,

c_password CHAR(20) NOT NULL

);

3.插入表数据

    • 3.1 输入以下SQL语句,点击“执行SQL(F8)”,插入客户信息数据
INSERT INTO client(c_id,c_name,c_mail,c_id_card,c_phone,c_password) VALUES (1,'张一','zhangyi@huawei.com','340211199301010001','18815650001','gaussdb_001');
INSERT INTO client(c_id,c_name,c_mail,c_id_card,c_phone,c_password) VALUES (2,'张二','zhanger@huawei.com','340211199301010002','18815650002','gaussdb_002');
INSERT INTO client(c_id,c_name,c_mail,c_id_card,c_phone,c_password) VALUES (3,'张三','zhangsan@huawei.com','340211199301010003','18815650003','gaussdb_003');
INSERT INTO client(c_id,c_name,c_mail,c_id_card,c_phone,c_password) VALUES (4,'张四','zhangsi@huawei.com','340211199301010004','18815650004','gaussdb_004');
INSERT INTO client(c_id,c_name,c_mail,c_id_card,c_phone,c_password) VALUES (5,'张五','zhangwu@huawei.com','340211199301010005','18815650005','gaussdb_005');
INSERT INTO client(c_id,c_name,c_mail,c_id_card,c_phone,c_password) VALUES (6,'张六','zhangliu@huawei.com','340211199301010006','18815650006','gaussdb_006');
INSERT INTO client(c_id,c_name,c_mail,c_id_card,c_phone,c_password) VALUES (7,'张七','zhangqi@huawei.com','340211199301010007','18815650007','gaussdb_007');
INSERT INTO client(c_id,c_name,c_mail,c_id_card,c_phone,c_password) VALUES (8,'张八','zhangba@huawei.com','340211199301010008','18815650008','gaussdb_008');
INSERT INTO client(c_id,c_name,c_mail,c_id_card,c_phone,c_password) VALUES (9,'张九','zhangjiu@huawei.com','340211199301010009','18815650009','gaussdb_009');
INSERT INTO client(c_id,c_name,c_mail,c_id_card,c_phone,c_password) VALUES (10,'李一','liyi@huawei.com','340211199301010010','18815650010','gaussdb_010');
INSERT INTO client(c_id,c_name,c_mail,c_id_card,c_phone,c_password) VALUES (11,'李二','lier@huawei.com','340211199301010011','18815650011','gaussdb_011');
INSERT INTO client(c_id,c_name,c_mail,c_id_card,c_phone,c_password) VALUES (12,'李三','lisan@huawei.com','340211199301010012','18815650012','gaussdb_012');
INSERT INTO client(c_id,c_name,c_mail,c_id_card,c_phone,c_password) VALUES (13,'李四','lisi@huawei.com','340211199301010013','18815650013','gaussdb_013');
INSERT INTO client(c_id,c_name,c_mail,c_id_card,c_phone,c_password) VALUES (14,'李五','liwu@huawei.com','340211199301010014','18815650014','gaussdb_014');
INSERT INTO client(c_id,c_name,c_mail,c_id_card,c_phone,c_password) VALUES (15,'李六','liliu@huawei.com','340211199301010015','18815650015','gaussdb_015');
INSERT INTO client(c_id,c_name,c_mail,c_id_card,c_phone,c_password) VALUES (16,'李七','liqi@huawei.com','340211199301010016','18815650016','gaussdb_016');
INSERT INTO client(c_id,c_name,c_mail,c_id_card,c_phone,c_password) VALUES (17,'李八','liba@huawei.com','340211199301010017','18815650017','gaussdb_017');
INSERT INTO client(c_id,c_name,c_mail,c_id_card,c_phone,c_password) VALUES (18,'李九','lijiu@huawei.com','340211199301010018','18815650018','gaussdb_018');
INSERT INTO client(c_id,c_name,c_mail,c_id_card,c_phone,c_password) VALUES (19,'王一','wangyi@huawei.com','340211199301010019','18815650019','gaussdb_019');
INSERT INTO client(c_id,c_name,c_mail,c_id_card,c_phone,c_password) VALUES (20,'王二','wanger@huawei.com','340211199301010020','18815650020','gaussdb_020');
INSERT INTO client(c_id,c_name,c_mail,c_id_card,c_phone,c_password) VALUES (21,'王三','wangsan@huawei.com','340211199301010021','18815650021','gaussdb_021');
INSERT INTO client(c_id,c_name,c_mail,c_id_card,c_phone,c_password) VALUES (22,'王四','wangsi@huawei.com','340211199301010022','18815650022','gaussdb_022');
INSERT INTO client(c_id,c_name,c_mail,c_id_card,c_phone,c_password) VALUES (23,'王五','wangwu@huawei.com','340211199301010023','18815650023','gaussdb_023');
INSERT INTO client(c_id,c_name,c_mail,c_id_card,c_phone,c_password) VALUES (24,'王六','wangliu@huawei.com','340211199301010024','18815650024','gaussdb_024');
INSERT INTO client(c_id,c_name,c_mail,c_id_card,c_phone,c_password) VALUES (25,'王七','wangqi@huawei.com','340211199301010025','18815650025','gaussdb_025');
INSERT INTO client(c_id,c_name,c_mail,c_id_card,c_phone,c_password) VALUES (26,'王八','wangba@huawei.com','340211199301010026','18815650026','gaussdb_026');
INSERT INTO client(c_id,c_name,c_mail,c_id_card,c_phone,c_password) VALUES (27,'王九','wangjiu@huawei.com','340211199301010027','18815650027','gaussdb_027');
INSERT INTO client(c_id,c_name,c_mail,c_id_card,c_phone,c_password) VALUES (28,'钱一','qianyi@huawei.com','340211199301010028','18815650028','gaussdb_028');
INSERT INTO client(c_id,c_name,c_mail,c_id_card,c_phone,c_password) VALUES (29,'钱二','qianer@huawei.com','340211199301010029','18815650029','gaussdb_029');
INSERT INTO client(c_id,c_name,c_mail,c_id_card,c_phone,c_password) VALUES (30,'钱三','qiansan@huawei.com','340211199301010030','18815650030','gaussdb_030');
    • 3.2 输入以下SQL语句,点击“执行SQL(F8)”,查询插入结果;
select count(*) from client;
    • 结果如下,即完成体验
    • 执行记录如下:

4.删除数据库实例(务必)

    • 4.1 返回“云数据库GaussDB(for MySQL)控制台”,点击“更多”,选择“删除实例”
    • 4.2 按照指引完成删除实例

四、体验反馈

欢迎扫码填写产品体验反馈,与云数据库GaussDB一起成长!

二维码-华为开发者日·北京站云数据库GaussDB产品体验反馈.png


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。