• [问题求助] 能否在华为云上搭建数据库,实现嵌入式设备接入华为云后,将采集到的数据存储到华为云数据库中
    能否在华为云上搭建数据库,实现将嵌入式设备接入华为云后,将嵌入式设备上采集到的数据存储到华为云的数据库中,再由其他的应用端区访问数据库中的数据
  • [技术干货] GaussDB(for MySQL) 模拟银行核心数据库,从模型设计到SQL实操,沉浸式DBA体验
    GaussDB(for MySQL) 模拟银行核心数据库,从模型设计到SQL实操,沉浸式DBA体验实验目标本实验指导书以金融行业为场景,设计数据库模型,并使用华为云GaussDB(for MySQL)构建金融场景下的数据库,通过对数据库中的对象之一表的创建,掌握基础SQL语法,体验对表中数据的增删改查。注意:实验结束后务必一定要删除实例,以防止继续扣费!(操作方式在最后!)前置条件1.  登录华为云账号,并完成实名认证 登录cid:link_1,进入华为云官网,输入账号及密码,登录。2. 点击链接/扫码完成报名,领取华为云资源代金券(仅限200名,先到先得!)3. 开通华为云GaussDB(for MySQL)数据库资源:3.1 点击购买云数据库GaussDB(for MySQL)资源选择购买规格如下:计费模式:按需付费区域:华北-北京四可用区类型:单可用区性能规格:通用型CPU架构:x86;2vCPUs|8GB管理员密码:自行设置其余各项默认,点击“立即购买”,确认后“提交”3.2 提交后“返回云数据库GaussDB(for MySQL)列表”等待创建完成(大约需要十分钟)实验概览实验任务要求请按照要求,完成以下实验任务:4. 初始化数据库4.1  登录数据库4.2  输入用户名和密码,测试连接后登录 4.3  点击“新建数据库”,自定义数据库名称,例finance,后确认4.4  点击“SQL查询”进入SQL交互页面5. 创建表操作5.1 删除表client:输入以下代码,点击“执行SQL(F8)”DROP TABLE IF EXISTS client;5.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);6. 插入表client数据6.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');6.2  输入以下SQL语句,点击“执行SQL(F8)”,查询插入结果select count(*) from client;结果如下:6.3 点击“库管理”,选择“打开表”,可以看到刚刚创建的表7. 在表client中增加一条数据INSERT INTO client(c_id,c_name,c_mail,c_id_card,c_phone,c_password) VALUES (31,'李丽','lili@huawei.com','340211199301010031','18815650031','gaussdb_031');刷新之后表中出现新增的数据新用户连接数据库8. 新用户的创建和授权:8.1 创建用户dbuser,密码为Gauss#3demoCREATE USER 'dbuser'@'%' IDENTIFIED BY 'Gauss#3demo';8.2 给用户dbuser授予finance数据库下对象的查询权限GRANT SELECT ON finance.* TO 'dbuser'@'%';flush privileges;8.3 在DAS登录数据库界面中,点击“新增数据库登录”,选择数据库引擎为GaussDB(for MySQL),选择对应购买的实例。输入用户名为dbuser,密码为Gauss#3demo。点击“立即新增”,如下图:数据库列表中选择finance数据库,点击“SQL查询”。8.4 访问finance数据库的表client。进入finance数据库,并在SQL窗口中敲击如下SQL语句。select * from finance. client;结果如下:删除数据库实例(务必)9. 返回“云数据库GaussDB(for MySQL)控制台”,点击“更多”,选择“删除实例”按照指引完成删除实例
  • [热门活动] HCDG城市行福州站——“企业创新新引擎”数据库专项赋能会,让云原生技术普惠千行百业
    4月19日,由福州软件园科技创新发展公司和华为技术有限公司联合主办的HCDG城市行福州站——“企业创新新引擎”数据库专项赋能会在福州软件园成功举办。会议结合当下企业业务面临降本增效、智能运维等实际诉求,聚焦探讨数据库技术从上云(On Cloud)到与云原生真正结合(In Cloud)的能力与发展,加快企业数字化转型进程。活动伊始,华为云开发者技术专家褚蕴威带来了《云原生与云数据库从应用架构演进探讨数据库的未来发展》的内容分享。他表示,数字化发展进入下半场,企业上云也逐渐从以资源为中心的On Cloud走向了以应用为中心的In Cloud,迈入智能升级新阶段。数据作为企业的核心资产,丢失会给企业造成巨大的损失。不管是出于自建省钱、懒得替换或数据私有等角度考虑,在实际的业务中难免会遇到业务中断、集群实例异常、主机数据误删等数据安全方面的情况。而云数据库完全具备访问控制、权限管理、超高安全、备份机制、恢复机制、高效运维等优势,完全可以规避自建数据库所面临的风险。以华为云数据库RDS for MySQL为例,实例集成了ECS、CBR、主机安全、WAF等云资源,不仅功能齐全且只需计费一次,与完整自建数据库的价格对比,费用基本持平或者更低。基于数据库发展趋势洞察,褚蕴威分享到,云化、分布式、多模处理是当前数据库的主要演进方向,分布式与云结合是数据库的未来。华为云原生数据库通过Serverless、Regionless、Modeless的技术创新,打造出极具竞争力的云原生关系数据库GaussDB(for MySQL),拥有一写多读、ALT应用无损透明、冷热数据分层存储等关键技术,以及非关系数据库GeminiDB,具备超高性能、海量存储、极致弹性和稳定可靠的核心优势,在互联网、金融、汽车、游戏等数万个关键行业客户中得到广泛应用。同时,华为云GaussDB作为新一代分布式数据库,真正做到软硬协同,具备“五高两易”,即高可用、高安全、高性能、高弹性、高智能、易部署、易迁移的技术竞争力。与各国有大行进行数据库转型方案联创,实现业务系统长期稳定运行,是承载企业核心交易业务与数据处理的核心基石,给世界一个更优选择。福建星瑞格软件有限公司副总经理杜国旺带来了《ISV构建具有行业特征数据库》的内容分享。他提到,福建星瑞格软件有限公司(简称星瑞格)成立于2015年,专业从事事务型国产数据库产品的研发、行业推广及技术服务,拥有超百项专利、资质和荣誉,并与华为云展开了多方面的深度生态建设合作。星瑞格数据库管理系统SinoDB(V16.8) 采用两地三中心部署方案,支持共享存储,同时符合SQL-92/99采购标准,具有数据强一致和极高事务处理能力,可应用于党政、政务、金融、电信、能源、交通、制造等重点行业的交易密集型业务系统。SinoDB的业务封装功能适用于多种具有独特应用技术优势的场景领域,在某海事监管系统应用场景中,基于SinoDB封装技术完成的海洋GIS业务,实现了实时报警、航迹回放等作业需求,降低企业业务系统的建设和运维成本。关于星瑞格的未来发展,杜国旺表示,星瑞格作为华为云ISV重要合作伙伴,将携手华为云持续聚焦数据库建设,为云平台用户提供完整的数据库云服务解决方案,打造一流的数据库产品和服务。在活动最后的软件实操&自由交流环节,华为云数据库专家现场指导大家进行“GaussDB(for MySQL)的HTAP特性和Serverless特性的演示”的内容实践。尤其是在GaussDB(for MySQL) Serverless实例创建过程中,根据业务实时负载,集群资源秒级动态弹降、节点自动横向扩展,应用无损透明倒换,在各种场景下做到对上层业务透明无感,并且保持业务不中断,对企业级客户和中小客户十分友好,具有极致性价比。未来,华为云将加强与伙伴的深化合作,加厚数据库技术底盘,为企业业务发展提供强有力的保障,真正将云原生技术普惠万千用户,赋能千行百业深度数字化。
  • [问题求助] GaussDB for mysql
    GaussDB for mysql支不支持国产化适配,支不支持信创改造
  • [问题求助] 石油大厦 -APPCube部署到生产环境的对象索引如何清除
    APPCube部署到生产环境的对象索引如何清除
  • [问题求助] GaussDB 的数据库复制工具DRS支持oracle9i的迁移吗
    GaussDB 的数据库复制工具DRS支持oracle9i的迁移吗
  • [问题求助] Mysql和GaussDB的区别有哪些,数据迁移有什么工具么?
    目前在做Mysql换数据库的调研,有些问题想咨询一下论坛的大佬们,问题分两部分GaussDB(for MySQL):1,GaussDB(for MySQL)是否之部署在公有云上,能否私有化部署?2,如果我要学习GaussDB(for MySQL),有什么免费的沙箱环境么?GaussDB:1,Mysql和GaussDB(不是for MySQL)具体差异有多大,从SQL语法,数据迁移,等方面说一下2,Mysql迁移到GaussDB(不是for MySQL),有什么工具?Navicat迁过来少很多东西。3,GaussDB(不是for MySQL)有没有自带information_schema,performance_schema,mysql这几个系统自带的库。
  • [问题求助] 请问高斯DB for Mysql 使用的存储引擎是什么?
    请问高斯DB for Mysql 使用的存储引擎是什么?是rocksdb吗? 
  • 当某一用户在事务中修改某张表,还未提交时,其他用户能否查询这张表的数据?如果能,但是查到的是脏数据该怎么办?
    当某一用户在事务中修改某张表,还未提交时,其他用户能否查询这张表的数据?如果能,但是查到的是脏数据该怎么办?
  • [产品体验官] 【云声专场】开发者体验官:GaussDB(for MySQL) 模拟银行核心数据库!提建议领开发者盲盒礼包~
    华为云开发者日·2023年度创享峰会来啦!参加“GaussDB(for MySQL) 模拟银行核心数据库”,提出你的建议有机会获得开发者盲盒礼包惊喜不容错过,快叫上小伙伴一起来吧【体验项目】GaussDB(for MySQL) 模拟银行核心数据库,从模型设计到SQL实操,沉浸式DBA体验【活动时间】2023年12月20日-12月31日【参与方式】直接在此活动帖下方回帖提建议即可比如对产品功能的改进建议、对活动流程的感想、对现场活动的感悟等等PS:不要少于30字哦~【获奖规则】奖项设置有效回复楼层评选条件获奖名额激励礼品优质建议奖20对产品功能有改进价值的建议1名开发者盲盒礼品价值50-100元积极反馈奖20优质建议奖轮空的情况下进行抽取抽取1名开发者盲盒礼品价值50元【活动规则】1、本帖的回帖建议不少于30字,仅限于对“GaussDB(for MySQL) 模拟银行核心数据库”体验项目,其他项目建议不参与此次活动,否则将视为无效内容。2、本次活动将根据实际参与情况发放奖励,包括但不限于用户百分之百中奖或奖项轮空的情况;以上奖品均为实物奖品,具体发放视出库情况而定;3、活动预计于结束后七天内完成奖项公示,并于结束后15个工作日内完成邮寄。【温馨提示】1、请务必使用个人实名账号参与活动(IAM、企业账号等账号参与无效)。如一个实名认证对应多个账号,只有一个账号可领取奖励,若同一账号填写多个不同收件人或不同账号填写同一收件人,均不予发放奖励。2、所有获得奖品的获奖用户,请于获奖后3日内完成实名认证,否则视为放弃奖励。
  • [优秀案例分享] 基于高斯DB的汽车运输数据库课程设计
    一、背景介绍:汽车运输系统某汽车运输公司数据库中有三个实体,分别是车队、车辆、司机,车队属性有车队号、车队名;车辆属性有牌照号、生产厂家和出厂日期;司机属性有司机编号、姓名、联系电话。每个车队可以聘用若干个司机,但每个司机只能应聘于一个车队,车队聘用司机有个聘期;每个车队可以拥有若干个车辆,但每辆车只能属于一个车队;每个司机可以使多辆汽车,每辆汽车可以被多个司机使用,司机使用车辆有使用日期和公里数两个属性。二、画出ER图图片见附件《相关图片》三、转换为关系模式将ER图转换为关系模式,注明关系的属性、主键和外键。关系模式定义的写法举例如下:Table1(t1column1,t1column2,t1column3,…),主键t1column1,外键t1column2引用Table2表的t2column1。表名和列名请使用英文(或拼音)。具体转换如下:motorcade(mid,mname)主键(mid)car(license,manufacturer,prod_date,cmid)主键(license),外键cmid引用motorcade表的middriver(did,name,phone,dmid,employment)主键(did),外键dmid引用motorcade表的midcar_use(did,license,date,km)主键(did,license),外键did引用driver表中did,外键license引用car表中license四、使用高斯DB实践使用课程提供的华为云数据库GaussDB(for MySQL),登录分配给你的数据库,在其中建立和上述关系一致的物理表及表之间的关系等,在表中增加一定数量的测试数据(一般每张表至少10条数据)。完成后,使用“库管理”->“数据字典”->“导出PDF”,提交该PDF。PDF添加在了附件。五、设计业务需求分析你选择的应用场景,自行设计三个业务需求,在建立的数据库中定义成视图、存储过程、触发器或函数均可。对这三个自行定义的视图、存储过程、触发器或函数,请分别给出:(1)实现的业务需求描述(2)创建时完整的SQL代码(3)一个执行/触发/查询的例子,提供执行/触发/查询后的截图设计业务需求如下:(一)①建立视图km_view,查询所有总公里数大于2的司机编号。②CREATE VIEW km_viewAS(SELECT did FROM car_useGROUP BY didHAVING SUM(km)>2);③图片见附件《相关图片》(二)①建立存储函数 get_phonenum 查询某个司机的联系电话②DROP FUNCTION IF EXISTS get_phonenum;DELIMITER $CREATE FUNCTION get_phonenum(str VARCHAR(32))RETURNS INTReads SQL dataBEGINDECLARE phn INT;SELECT phone INTO phn FROM driver WHERE name=str;RETURN phn;END $DELIMITER ;③图片见附件《相关图片》3.①建立存储过程km_data,查询所有司机的平均公里数、最大公里数和最小公里数。②DROP PROCEDURE IF EXISTS km_data;DELIMITER $CREATE PROCEDURE km_data()BEGINSELECT AVG(km) AS 平均公里数,MAX(km) AS 最大公里数,MIN(km) AS 最小公里数 FROM car_use;END $DELIMITER ;③图片见附件《相关图片》
  • [优秀案例分享] 校运会系统数据库设计
    1、设计要求案例2: 校运动会系统校运动会中有各类比赛,每一比赛类别有类别编号、类别名称和主管属性,每一比赛类别包含很多个比赛项目;每一比赛项目有项目编号、项目名称、比赛时间和级别属性;各个系团队有团队编号、团队名称、领队属性,每一代表团由多名运动员组成,运动员有编号,姓名,年龄,性别等属性;每一名运动员可以参加多个比赛项目,每一比赛项目也有多名运动员参加,运动员参加比赛有成绩属性。2、ER图绘制ddl代码SET foreign_key_checks = 0; drop table if exists competitionType; drop table if exists competition; drop table if exists team; drop table if exists player; drop table if exists results; CREATE TABLE competitionType( typeid int COMMENT '类型编号' AUTO_INCREMENT, type_name varchar(40) COMMENT '类型名称', manager varchar(40) COMMENT '主管名称', PRIMARY KEY (typeid) ); CREATE TABLE competition( cid int COMMENT '比赛编号' AUTO_INCREMENT, gender int COMMENT '比赛性别,1表示男,0表示女' DEFAULT 1, cname varchar(40) COMMENT '比赛名称', ctime DATETIME COMMENT '比赛时间', typeid int COMMENT '比赛类别编号', PRIMARY KEY (cid), FOREIGN KEY (typeid) REFERENCES competitionType(typeid) on delete set null ); CREATE TABLE team( tid int COMMENT '团队编号' AUTO_INCREMENT, tname varchar(40) COMMENT '团队名称', leader varchar(40) COMMENT '领队名称', PRIMARY KEY (tid) ); CREATE TABLE player( pid int COMMENT '运动员编号' AUTO_INCREMENT, pname varchar(40) COMMENT '姓名', age int COMMENT '年龄', gender int COMMENT '性别,1表示男,0表示女' DEFAULT 1, grade int COMMENT '年级级别', tid int COMMENT '所属团队编号', PRIMARY KEY (pid), FOREIGN KEY (tid) REFERENCES team(tid) on delete set null ); CREATE TABLE results( pid int COMMENT '运动员编号', cid int COMMENT '比赛编号', score int COMMENT '成绩', PRIMARY KEY (pid, cid), FOREIGN KEY (pid) REFERENCES player(pid), FOREIGN KEY (cid) REFERENCES competition(cid) ); SET foreign_key_checks = 1;3、数据字典在华为云gaussdb数据库中,在执行了上述ddl代码之后,使用“库管理”->“数据字典”->“导出PDF”,即可获得可视化的数据结构以检查数据定义的正确性 以下为本次设计导出的结果4、业务需求实现sql设计及其效果展示获取所有团体总成绩,并按总成绩排列展示delimiter $$ drop procedure if exists teamInfo; create procedure teamInfo() begin select tname as 院系名称, ifnull(sum(score),0) as 总分 from team team left join (select * from player natural join results) as pr on pr.tid = team.tid group by team.tid ORDER BY sum(score) desc; end; $$ delimiter;展示所有比赛项目的所有参赛人员及其参赛成绩delimiter $$ drop view if exists competitionInfo; create view competitionInfo as with compe(cid, cname2) as ( select cid, CONCAT(CASE gender when 1 then "男子" else "女子" END ,cname) as cname2 from competition) select cname2 as 项目名称, pname as 运动员, score as 成绩 from results natural join compe natural join player order by cname2 desc, score desc; $$ delimiter;男子只能参加男子比赛,女子只能参加女子比赛delimiter $$ drop trigger if exists results_insert_before_trigger; create trigger results_insert_before_trigger BEFORE INSERT ON results for each row BEGIN declare pgender int; declare cgender int; select gender into pgender from player where new.pid = pid; select gender into cgender from competition where new.cid = cid; if (cgender <> pgender) then insert into mytable values(0); end if; end; $$ delimiter;1是男性运动员,5是男子比赛,4是女子比赛,3是比赛成绩,未参加的可以设为0,可以看到只有男性运动员参加男子比赛才能成功报名,否则无法插入
  • [技术干货] 使用华为云GaussDB搭建智能门锁用户管理系统
    智能门锁技术在现代社会中得到了广泛的应用,而一个可靠的用户管理系统对于智能门锁的正常运行至关重要。本教程将介绍如何使用华为云的 GaussDB 构建一个强大的智能门锁用户管理系统。1.数据库设计首先,我们需要设计数据库结构,为此我们创建三个主要表:用户(User)、门锁(Lock)和授权(Authorization)。 2. 创建数据库和表在华为云 GaussDB 控制台中,先购买一个数据库资源: 打开一个新的数据库: 并按照上述ER图设计创建相应的表:-- 创建用户表 CREATE TABLE User ( UserID INT PRIMARY KEY, UserName VARCHAR(255), -- 其他用户信息字段... );-- 创建门锁表 CREATE TABLE Lock ( LockID INT PRIMARY KEY, LockName VARCHAR(255), -- 其他门锁信息字段... );-- 创建授权表 CREATE TABLE Authorization ( AuthorizationID INT PRIMARY KEY, UserID INT, LockID INT, FOREIGN KEY (UserID) REFERENCES User(UserID), FOREIGN KEY (LockID) REFERENCES Lock(LockID) );-- 创建用户门锁关系表 CREATE TABLE UserLock ( UserLockID INT PRIMARY KEY, UserID INT, LockID INT, FOREIGN KEY (UserID) REFERENCES User(UserID), FOREIGN KEY (LockID) REFERENCES Lock(LockID) );3. 插入示例数据插入一些示例数据,以便演示系统的基本功能。注意,实际中这些数据应该是由用户通过系统界面添加的。-- 插入用户数据 INSERT INTO User (UserID, UserName) VALUES (1, 'Alice'), (2, 'Bob'), (3, 'Charlie');-- 插入门锁数据 INSERT INTO Lock (LockID, LockName) VALUES (101, 'Front Door'), (102, 'Back Door');-- 插入授权数据 INSERT INTO Authorization (AuthorizationID, UserID, LockID) VALUES (1001, 1, 101), (1002, 2, 101), (1003, 3, 102);-- 插入用户门锁关系数据 INSERT INTO UserLock (UserLockID, UserID, LockID) VALUES (2001, 1, 101), (2002, 2, 101), (2003, 3, 102);4. 实现用户管理系统逻辑通过编程语言(如Java、Python等)或框架,实现用户管理系统的逻辑。这包括用户注册、授权管理等功能。在实际项目中,可能需要使用华为云的开发工具和 SDK 进行数据库连接和操作。5. 进行测试测试系统,确保用户可以成功注册,门锁可以正确地获取和验证用户的授权信息,以及用户门锁关系的管理。
  • [技术干货] 【分享】医疗场景下的数据库构建实践
    案例:医院人事系统每个科室有多名医生,每名医生只能在一个科室中工作。每名医生可以参加多个医药科研项目,每个医药科研项目可以由多名医生参加。每个医药科研项目由一名医生担任总负责人,一名医生可以负责多个医药科研项目。每名医生参加某医药科研项目,都有“项目职责”和“每年投入几个月”这两个信息。其他相关信息包括: 科室:科室编号、科室描述 医生:工号、姓名、性别、出生日期、进入医院工作日期、职称 医药科研项目:项目编号、项目名称、项目简述1. ER图绘制省略了部分属性,用下划线标注了主键。其中,由于将职责这一实体认定为弱实体,因此没有标注主键,但在具体实现时,会通过添加工号和项目编号这两个属性来将职责和医生和项目对应起来): 2. 将ER图转换为关系模式,注明关系的属性、主键和外键。Department(Dept dept_number, Dept dept_description, Dept doct_num) #科室编号,科室描述,医生数量 Doctor(Dct doct_id, Dct doct_name, Dept dept_number, Dct doct_gender, Dct doct_birthday, Dct doct_work_began_date, Dct doct_title) #医生编号,医生姓名,科室编号,性别,出生日期,进入医院工作日期、职称 Duty(Dct doct_id, Proj proj_id, Duty proj_duty, Duty worktime) #医生编号,项目编号,项目职责,每年投入几个月 Project(Proj proj_id, Proj proj_name, Proj proj_description, Proj proj_leader) #项目编号、项目名称、项目简述,负责人姓名3. 建立的数据库中定义成视图、存储过程、触发器或函数【1】视图功能描述:显示所有担任项目负责人的医生的姓名,工作年限,职称,所在科室SQL代码:CREATE view proj_leader as SELECT `user019db`.`project`.`proj_name` AS `proj_name`,`user019db`.`project`.`proj_leader` AS `项目领导人`,timestampdiff(YEAR,`user019db`.`doctor`.`doct_work_began_date`,now()) AS `工作年限`,`user019db`.`doctor`.`doct_title` AS `职称`,`user019db`.`doctor`.`dept_number` AS `科室编号` FROM (`user019db`.`project` join `user019db`.`doctor`) WHERE (`user019db`.`project`.`proj_leader` = `user019db`.`doctor`.`doct_name`)执行效果: 【2】存储过程功能描述:创建存储过程UpdateDoctorTitle,该存储过程更新doctor表中的职称(doct_title),根据医生的入职时间做不同的更新操作,使用游标:对入职时间在2010-01-01之前(含)的,如果之前的职称是副主任医师则设置医生的职称(doct_title)为主任医师;对入职时间在2018-01-01之前(含)的,如果之前的职称是实习医师则设置医生的职称(doct_title)为普通医生;SQL代码:CREATE PROCEDURE `UpdateDoctorTitle`() BEGIN DECLARE d_id INT; DECLARE work_date DATE; DECLARE title VARCHAR(255); DECLARE cur CURSOR FOR SELECT a.doct_work_began_date, a.doct_title, a.doct_id FROM doctor a; DECLARE exit HANDLER FOR NOT FOUND CLOSE cur; OPEN cur; REPEAT FETCH cur INTO work_date, title, d_id; IF(work_date<='2010-01-01' and title = '副主任医师') THEN SET title = '主任医师'; ELSEIF(work_date<='2018-01-01' and title = '实习医师') THEN SET title = '普通医生'; END IF; UPDATE doctor SET doct_title=title WHERE doct_id=d_id; UNTIL 0 END REPEAT; END执行效果: 【3】触发器功能描述:当有新增的医生后,科室内的医生数量对应更新SQL代码:DELIMITER $$ CREATE DEFINER=`DB_USER019`@`%` TRIGGER `UpdateDoctNum` AFTER INSERT ON `doctor` FOR EACH ROW begin UPDATE department SET doct_num=(SELECT count(*) FROM doctor WHERE new.dept_number=dept_number) WHERE dept_number=new.dept_number; end $$ DELIMITER ;执行效果:
  • [问题求助] dws里建表的时候定义character varying的长度和不定义character varying的长度有什么区别?
    dws里建表的时候定义character varying的长度和不定义character varying的长度有什么区别?
总条数:170 到第
上滑加载中