精华内容
下载资源
问答
  • (外键,若有两个表A,B,C是A主键,而B中也有C字段,则C就是表B外键,外键约束主要用来维护两个表之间数据一致性)设计方案:方案一:建立一张用户基地表,与r_user与用户基地表,保持一对多的关系,如图所示,...

    业务需求:用户表r_user保存用户名等信息。现需要给每个用户设置工作基地,一个用户可以有多个工作基地,多个用户也可以有一个工作基地,即多对多关系。(外键,若有两个表A,B,C是A的主键,而B中也有C字段,则C就是表B的外键,外键约束主要用来维护两个表之间数据的一致性)

    设计方案:

    方案一:建立一张用户基地表,与r_user与用户基地表,保持一对多的关系,如图所示,r_user的主键id做为r_user_base的外键user_id。通过r_user中的id,在r_user_base表中load该用户的所有工作基地。

    1d40b488862d2748c13f1cb2f796a54c.png

    方案二:建立一张个基地表base_info保存目前存在的所有基地,再建一张user_base关系表。如图所示,关系表user_base有两个外键user_id与base_id

    d4949941c4df4408f8d0cc0273bb0cec.png

    方案一的特点是,只需要键一张表就可以完成业务需求。缺点是不够模块化,如果在其它地方还要用到基地信息,则还要再建基地表

    方案二的特点是,用一张关系表连接两张信息表。便于信息表的维护与重复利用。

    基于业务需求与以后扩展及重用性考虑,采用方案二实现需求。

    在MySQL 3.23.44版本后,InnoDB引擎类型的表支持了外键约束。

    外键的使用条件:

    1.两个表必须是InnoDB表,MyISAM表暂时不支持外键(据说以后的版本有可能支持,但至少目前不支持);

    2.外键列必须建立了索引,MySQL 4.1.2以后的版本在建立外键时会自动创建索引,但如果在较早的版本则需要显示建立;

    3.外键关系的两个表的列必须是数据类型相似,也就是可以相互转换类型的列,比如int和tinyint可以,而int和char则不可以;

    外键的定义语法:

    [CONSTRAINT symbol] FOREIGN KEY [id] (index_col_name, ...)

    REFERENCES tbl_name (index_col_name, ...)

    [ON DELETE {RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT}]

    [ON UPDATE {RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT}]

    cascade方式

    在父表上update/delete记录时,同步update/delete掉子表的匹配记录

    On delete cascade从mysql3.23.50开始可用; on update cascade从mysql4.0.8开始可用 。

    set null方式

    在父表上update/delete记录时,将子表上匹配记录的列设为null

    要注意子表的外键列不能为not null

    On delete set null从mysql3.23.50开始可用; on update set null从mysql4.0.8开始可用

    No action方式

    如果子表中有匹配的记录,则不允许对父表对应候选键进行update/delete操作

    这个是ANSI SQL-92标准,从mysql4.0.8开始支持

    Restrict方式

    同no action, 都是立即检查外键约束

    建立人员信息表:

    1 CREATE TABLE`r_user` (2 `id` bigint(20) NOT NULLAUTO_INCREMENT,3 `NAME` varchar(20) DEFAULT NULL,4 `PASSWORD` varchar(50) DEFAULT NULL,5 `STAFF_NUM` varchar(20) DEFAULT NULL,6 `USER_NAME` varchar(20) DEFAULT NULL,7 PRIMARY KEY(`id`),8 ) ENGINE=InnoDB AUTO_INCREMENT=54 DEFAULT CHARSET=utf8

    建立基地信息表

    1 CREATE TABLE`branch_info` (2 `ID` bigint(20) NOT NULLAUTO_INCREMENT,3 `BRANCH_CODE` varchar(255) DEFAULT NULL,4 `BRANCH_DESC` varchar(255) DEFAULT NULL,5 PRIMARY KEY(`ID`)6 ) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8

    关系表:

    1 CREATE TABLE`user_work_base` (2 `id` bigint(20) NOT NULLAUTO_INCREMENT,3 `version` int(11) NOT NULL,4 `user_id` bigint(20) NOT NULL,5 `base_id` bigint(20) NOT NULL,6 PRIMARY KEY(`id`),7 CONSTRAINT `user_work_base_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `r_user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,8 CONSTRAINT `user_work_base_ibfk_2` FOREIGN KEY (`base_id`) REFERENCES `branch_info` (`ID`) ON DELETE CASCADE ON UPDATE CASCADE

    9 ) ENGINE=InnoDB AUTO_INCREMENT=37 DEFAULT CHARSET=utf8

    删除人员r_user表中人员A,关系表user_base自动删除A的关系数据。

    如果外键使用Restrict方式,只删除A,则报错。

    Cannot delete or update a parent row: a foreign key constraint fails (`maircrew`,`user_work_base`, CONSTRAINT `FK41EB46D32AA89EA0`

    FOREIGN KEY (`user_id`) REFERENCES `r_user` (`id`))

    展开全文
  • 最近在开发中遇到了一些问题,...实现方法主要考虑使用mysql随机查询记录,在网上查了很方案,然后在了我们游戏中。实现方案是,将所有随机名字都插入到一张表中,然后从中随机取一条当前角色表中没有出现过名...

    最近在开发中遇到了一些问题,在此记录一下解决的方法,已作备忘。

    1、现在创建游戏角色的时候,基本上都是支持角色名字随机的,以前此功能在客户端用代码实现,然后向服务器请求并验证,后来发现有时候连续几次都失败,所以改成在服务器实现。实现方法主要考虑使用mysql随机查询记录,在网上查了很多方案,然后用在了我们游戏中。

    实现方案是,将所有随机名字都插入到一张表中,然后从中随机取一条当前角色表中没有出现过的名字。

    BEGIN

    DECLARE randnum int DEFAULT 0;

    SELECT FLOOR(RAND() * 309034) INTO randnum;

    SELECT rname INTO _name FROM `names` WHERE ((_sex = sex) AND

    (rname not in (SELECT Name FROM longwen.player WHERE _world = WorldID)) AND

    (id > randnum)) LIMIT 1;

    set returnvalue = 0;

    END

    2、接运营的需求,有时候因为服务器维护,需要给所有玩家送一些东西,这时候涉及离线玩家,所以我们的方案是静态写数据库。

    因为对mysql没有深入研究过,在实践的过程中发现游标操作只能修改一条数据,后来查了很多资料,还是解决了问题,自己也学到了一点知识,修改后存储过程如下:

    DECLARE _cursor CURSOR FOR

    SELECT RoleID FROM player WHERE (RoleID NOT IN (SELECT roleID FROM email where LENGTH(datas) <> 0));

    DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' set _done = 1;

    OPEN _cursor;

    set _done = 0;

    REPEAT

    FETCH _cursor into _roleId;

    replace into email(roleID, datas) values(_roleId, 'test');

    UNTIL _done END REPEAT;

    CLOSE _cursor;

    修改前repeat里面有一条select语句。出现这个问题,主要是对SQLSTATE理解不够,02000异常有3种条件:

    A:SELECT INTO 语句或 INSERT 语句的子查询的结果为空表。

    B:在搜索的 UPDATE 或 DELETE 语句内标识的行数为零。

    C:在 FETCH 语句中引用的游标位置处于结果表最后一行之后。

    后来把select语句提出去放到游标声明语句里面就好了。

    本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

    本文系统来源:php中文网

    TAG标签:游标角色名字

    展开全文
  • 电子商务网上购物网站自助站管理系统,网络时代,一个电子商务时代,一个创造财富奇迹时候,你想一个网上购物系统,网络购物系统,在线购物系统,商城购物系统 ,网络购物系统吗,你想这个来创业吗? 购物系统,电子...
  • 而关于农村自问题也是越来越多的人关心了,毕竟房是家,是港湾,它安全和实用,以及外观设计都是至关重要,而修建屋顶时,瓦片选择也是很家庭纠结一点,于是就有人在后台咨询小编,农村盖房子琉璃...

    导读:农村盖房子用琉璃瓦合适吗?它的优缺点是什么?

    在国家大力扶持下,农村有着翻天覆地的变化,一桩桩小洋楼拔地而起,而关于农村自建房的问题也是越来越多的人关心了,毕竟房是家,是港湾,它的安全和实用,以及外观设计都是至关重要的,而修建屋顶时,瓦片的选择也是很多家庭纠结的一点,于是就有人在后台咨询小编,农村盖房子用琉璃瓦合适吗?它的优缺点是什么?选择什么样材质的瓦才是最合适的呢?接下里小编就给大家一一解释,希望能让你不再纠结。

    839104eec5c190d8078fe59abced7e22.png

    首先,农村盖房子也在逐步使用琉璃瓦,不过因为普通的琉璃瓦较容易碎裂,我们用的一般是改良了的琉璃瓦,也就是彩钢琉璃瓦,但是它的成本相对于其他的普通瓦片会比较高,而且由于琉璃瓦的渗透力低,若是在家做饭,水蒸气不能排出,对屋顶的危害也不少,并且由于做工较为复杂,不适合长距离运输易破损,重量重,易脱落,环境污染,目前国家环境保护重点整改对象。不过,琉璃瓦防水能力比较强,能够保证下大雨的时候,水能够及时的流走。

    df2d5c32bc43cfb52faab1fe0a2ed118.png

    其次,琉璃瓦是古代的发明,优点是可以自净,下雨下雪自动干净,放在古代琉璃瓦还有达官显贵的家中才能使用,而我国的文化瑰宝——故宫的屋顶大部分采用的就是琉璃瓦,这也可以很好的解释为何经过千年的洗礼,故宫的屋顶居然没有鸟屎的痕迹,就这就是由于琉璃瓦的坡面采用无缝连接,密封性能相当出色,拥有其他屋顶建材无法比拟的防水性能,而且永久不褪色,即使长时间在阳光照射下也能保持颜色不变,所以,从耐用性以及美观、实用的角度来讲,琉璃瓦的确是个不错的选择!

    141470c5467eed394b7ba9670fb4bbae.png

    不过,事物都是两方面的,琉璃瓦也一样的有利有弊,除了做工复杂,成本高外,还由于琉璃瓦瓦齿比较小,这样瓦匠在屋顶上压瓦的时候,就增加了难度,而且冬天遇冷会收缩,夏天预热膨胀,热胀冷缩会导致釉面龟裂,而由于琉璃瓦本身很材质以及安装问题,在修补的时候就会很麻烦,所以对于后续的养护和修补都是一件麻烦事,同时也增加的建筑资金的投入,对于一般的家庭是不太合适的。因此,家庭条件一般的话,还是考虑其他的瓦片进行装修,但是有钱的,琉璃瓦是个不错的选择。

    b5d66b7af6080659b16c022ef310ff21.png

    综合上述,如果觉得对,请根据自己的情况来选择用什么瓦,若是选择琉璃瓦一定要做好防水施工,这是由于之前我们说过琉璃瓦安装是一个个小的构件拼接起来的,因此屋顶防水层是必须要做好的,而且对于经常下雪的地区,一定要就天沟修好点,要不然由于琉璃瓦的本身的特点,很容易掉到地上砸到路人。总之,选择了琉璃瓦,最好找一个有经验的施工队。以上是小编介绍的全部内容,欢迎点赞转发!感谢大家的支持!

    展开全文
  • 在这里,他们自己所学专业和辛劳汗水,他们最质朴步伐,追寻着自己人生梦想,在异域他乡,书写着平职教中心毕业生就业职场上优秀答卷。 作为驻天津实习就业办事处教师,我们有机会接触更多的毕业生...
  • 如果对锚点位数据进行操作,还需要额外映射在另外一个数据集合上,则称之为外建锚点。 列举一个实例,做进一步说明:要从大到小重新排序一个数组A;数组A有100个元素:数据d,规定从A[0]开始每5个数据为一组p_;同时...
  • 2.9 为什么不能建的==和!=操作符比较结构? 2.10 结构传递和返回是如何实现? 2.11 如何向接受结构参数函数传入常量值?怎样创建无名中间常量结构值? 2.12 怎样从/向数据文件读/写结构? 结构填充 2.13...
  • 2.9 为什么不能建的==和!=操作符比较结构? 2.10 结构传递和返回是如何实现? 2.11 如何向接受结构参数函数传入常量值?怎样创建无名中间常量结构值? 2.12 怎样从/向数据文件读/写结构? 结构填充 2.13...
  • 通过上节的多窗口原理实现由登录对话框进入主窗口,而用户名和密码可以 if 语句进行判断。 实现过程: 1.先新建Qt4 Gui Application 工程,工程名为mainWidget,选用QWidget 作 为Base class,这样便建立了主窗口...
  • 赋值运算符除”=”,还可用”:=”;”&”、”|”为位操作符,而对应逻辑操作符为:”&&”、”||”;不等号可以使用”~=”、”!=”、””中任何一个。 关于如何将一个源字符流数据按照数学规则计算出结果...
  • MFC程序框架剖析

    2015-03-05 09:53:19
    21、框架窗口(整个应用程序框所包括部分)是视类窗口(框架窗口中空白地方)一个父窗口 22、MFC提供了一个文档/视类结构,文档是指CDocument类,视类是指CView类。前者用于数据存储和加载, 后者用于...
  • A: 如果你用的 ADSL, Cable 是原本需要安装 PPPoE 或是电信告诉你用 Windows 2K/XP/2003 内的 PPPoE, 这代表者当你安装 cFos 以后, 可以完全移除原先其他 PPPoE 所创造出来的连线帐号. 完全以 cFos PPPoE 来取代之...
  • 不过明确是编写那样代码有简单,购买它们会有昂贵以及它们需要多么昂贵和强大硬件。如果你有什么中立观点(比如说没有被SUN和Microsoft百万美金所影响),请顺便通知我。 据我所知,JSP基于Java,...
  • 做软件这些年以来发现一个问题,就是软件优劣极难分辨和比较,即便是自己使用已久软件,许多地方起来觉得不好,用户常常会归结到自己水平低、不会,其实所有让自己郁闷软件都是设计有问题表现,真正...
  • 它本身就是一个完整的 32 位的多用户多任务操作 系统,因此不需要先安装 DOS 或其他的操作系统(MS Windows, OS2, MINIX..)就可以进 行直接的安装。 Linux的最早起源是在1991年10月5日由一位芬兰的大学生Linux ...
  • 4.4 通过编程实现同一窗体的多个副本 83 4.4.1 支持多窗体实例 84 4.4.2 检查Employees窗体的代码 84 4.4.3 自动关闭Employees窗体 86 4.5 小 结 87 第5章 使用DAO 88 5.1 理解DAO 88 5.1.1 了解...
  • 购物网站系统源代码网页模板正式版

    千次下载 热门讨论 2009-12-03 11:13:42
    网上购物系统,让你客户在网上购物中心,进行网上购物,本系统是最好网上购物网站,本程序建立之网上购物网站大全,上海,北京,深圳,广州,香港,国外网上购物网站系统很是在此基础上完成,我们将打造最好,最大...
  • 【工作表拆分】 将当前工作表某列数据按指定条件拆分成个工作表,可以任意列数据以及选定数据做为拆分条件。 【行列奇偶选择】 可视化对当前工作表行与列进行快速奇偶行或奇偶列快速选定操作。 【查找...
  • 【工作表拆分】 将当前工作表某列数据按指定条件拆分成个工作表,可以任意列数据以及选定数据做为拆分条件。 【行列奇偶选择】 可视化对当前工作表行与列进行快速奇偶行或奇偶列快速选定操作。 ...
  • 网上电子商务购物网站

    热门讨论 2009-02-23 19:53:34
    电子商务网上购物网站自助站管理系统,网络时代,一个电子商务时代,一个创造财富奇迹时候,你想一个网上购物系统,网络购物系统,在线购物系统,商城购物系统 ,网络购物系统吗,你想这个来创业吗? 购物系统,电子...
  • 软件工程教程

    热门讨论 2012-07-06 23:10:29
    类图滥了,狗屋画了10页类图 类图没分清粗细层次: 概念类图 规约类图 实现类图 鸟类图 鸟类图 鸟类图 实例:监听器类图 使用类图建议 不要试图使用所有符号 根据项目开发不同阶段,正确观点来画...
  • 【工作表拆分】 将当前工作表某列数据按指定条件拆分成个工作表,可以任意列数据以及选定数据做为拆分条件。 【行列奇偶选择】 可视化对当前工作表行与列进行快速奇偶行或奇偶列快速选定操作。 ...
  • 【工作表拆分】 将当前工作表某列数据按指定条件拆分成个工作表,可以任意列数据以及选定数据做为拆分条件。 【行列奇偶选择】 可视化对当前工作表行与列进行快速奇偶行或奇偶列快速选定操作。 ...
  • 这道爱尔兰炖牛肉小秘密就是啤酒使用,传统做法是爱尔兰黑啤来炖煮牛肉,比如Guinness。 第二次世界大战后1944年,由于伦敦人口急剧膨胀,权威人士提议并计划在距离伦敦城20-30英里周边地区...
  • php高级开发教程说明

    2008-11-27 11:39:22
    行是干什么用的,它们在什么条件下执行,它们所要求的设置。即使你缺乏背景知识,遇到了 一个错综复杂的算法,你也能很快看出它所从事的任务,以及它的风格。 举个例子,然后说“照着做”总是很容易的,但我想这一章...
  • EXCEL集成工具箱V6.0

    2010-09-11 01:44:37
    【工作表拆分】 将当前工作表某列数据按指定条件拆分成个工作表,可以任意列数据以及选定数据做为拆分条件。 【行列奇偶选择】 可视化对当前工作表行与列进行快速奇偶行或奇偶列快速选定操作。 ...
  • 室内体育运动用地,包括体育场馆、游泳场馆、各类球场及其附属业余体校等用地 A42 体育训练用地 为各类体育运动专设训练基地用地 A5   医疗卫生用地 医疗、保健、卫生、防疫、康复和急救设施等用地 A51...

空空如也

空空如也

1 2
收藏数 27
精华内容 10
关键字:

外建用的多吗