当前位置: 首页 > news >正文

有没有做试卷的网站手机网站 设计趋势

有没有做试卷的网站,手机网站 设计趋势,贵州企业网站,电子商务网站建设 精品课文章目录 当研究一个问题慢慢深入时#xff0c;一个看起来简单的问题也暗藏玄机。在 SQL 中#xff0c;主键成为外键这是一个很平常的问题#xff0c;乍一看没啥值得注意的。但如果这个主键是一种复合主键#xff0c;而另一个表又引用这个键作为它的复合主键#xff0c;问… 文章目录 当研究一个问题慢慢深入时一个看起来简单的问题也暗藏玄机。在 SQL 中主键成为外键这是一个很平常的问题乍一看没啥值得注意的。但如果这个主键是一种复合主键而另一个表又引用这个键作为它的复合主键问题就会变得复杂。 这里为了便于说明简单抽象出这样一个情景。数据库中有很多用户User每个用户有他的好友分组Folder每个分组下面有该用户的好友Contact。下面看看应该如何建表。 User 表建表示例代码如下 CREATE TABLE User (id VARCHAR(64) NOT NULL,name VARCHAR(64) NOT NULL,# ...为了简化说明此表省略其它字段...PRIMARY KEY (id) ); Folder 表建表示例代码如下 CREATE TABLE Folder (id VARCHAR(64) NOT NULL,userId VARCHAR(64) NOT NULL,name VARCHAR(64) NOT NULL,# ...为了简化说明此表省略其它字段...PRIMARY KEY (userId, id),# 因为上面的是复合主键所以自动创建的是联合索引而其它表的外键引用需要的是单个索引INDEX idIndex (id),FOREIGN KEY (userId) REFERENCES User (id) ); Contact 表建表示例代码如下 CREATE TABLE Contact (id VARCHAR(64) NOT NULL,# 表示此联系人属于谁的好友userId VARCHAR(64) NOT NULL,# 表示此联系人对应 User 中的 idlinkedUserId VARCHAR(64) NOT NULL,folderId VARCHAR(64) NOT NULL,# ...为了简化说明此表省略其它字段...PRIMARY KEY (userId, id),# 因为上面的是复合主键所以自动创建的是联合索引而其它表的外键引用需要的是单个索引INDEX idIndex (id),# 同一个用户不能拥有两个相同 ID 的 ContactUNIQUE (userId, linkedUserId),# 当复合主键成为外键时必须整个复合主键一起作为外键不能只引用复合主键其中的某个属性FOREIGN KEY (userId) REFERENCES Folder (userId),FOREIGN KEY (folderId) REFERENCES Folder (id),FOREIGN KEY (linkedUserId) REFERENCES User (id) );建表示意图如下 笔者已经将正确的建表在上述给出了但问题其实不简单。注意看表 Contact 引用了两个表的外键表 User 和 表 Folder。而很奇妙的是表 User、Folder 和 Contact 都有一个形同“userId”的字段而且它们的这个字段的意义是相同的。那么表 Contact 中的 userId 究竟是引用表 User 中的 id 呢还是引用表 Folder 中的 userId 呢还是随便选一个都可以呢 答案是必须引用表 Folder 中的 userId而不能引用表 User 中的 id。原因是当复合主键成为外键时必须整个复合主键一起作为外键不能只引用复合主键其中的某个属性。 注意看表 Contact 的属性 folderId 已经引用了表 Folder 的属性 id 了但表 Folder 的主键是 (iduserId)。在这个情形下表 Contact 必须也同时引用表 Folder 关于这个复合主键的其它属性。而正好表 Contact 有一个属性 userId所以它必须引用表 Folder 中的 userId。 可是表 Contact 不是也和表 User 有引用啊为什么没有受到表 User 的约束呢因为 User 的主键不是复合主键而且表 Contact 已经通过属性 linkedUserId 引用了表 User 的主键 id因此不需要强制引用 User 的其它属性。 当然这只是 SQL 上的逻辑而 SQL 只是一套标准各个数据库的服务提供商对 SQL 的支持和实现因人而异。在 MySQL 中如果建表时错误地将上述表 Contact 中的 userId 引用了表 User 中的 idMySQL 并不会抛出错误因为 MySQL 关于这方面不太严谨。但如果使用的是 SQLiteSQLite 将会在建表时就抛出错误。但不管各厂商的支持如何将应该保证数据库建表的逻辑是正确的。
http://www.w-s-a.com/news/853764/

相关文章:

  • 和田网站制作无限动力网站
  • 长沙口碑好网站建设企业网站 需求
  • 哪个网站建设公司wordpress陌陌主题
  • 湖滨区建设局网站北京国际建设集团网站
  • 做服装团购有哪些网站wordpress 端口修改
  • 上海礼品定制网站响应式网站模版建站
  • 那种自行提取卡密的网站怎么做网站攻击
  • 洛阳免费网站建设qq是哪家公司开发的软件
  • 怎么做网站网页wordpress网址导航
  • 专业微信网站建设公司首选公司wordpress自动分类插件
  • 网站设计登录界面怎么做网站突然排名没了
  • wordpress 人物页面seo优化公司信
  • 高端网站建设报价网站建设需要硬件设备
  • 做国际物流在哪些网站找客户营销qq怎么申请
  • 网站做推广百度好还是360好科技厅
  • 网站开发工具排名万户网络建一个网站虽要多少钱
  • 用凡科做的网站要钱吗WordPress城市切换
  • 制作一个门户网站需要多少钱营销型网站特征
  • 手机网站 多html中国建设银行网站包头分行
  • 哪个网站做免费广告好招牌图片效果图设计制作
  • 网站建设优化服务机构苏州市做网站
  • 网站如何优化流程企业网站管理系统视频教程
  • 我想克隆个网站 怎么做贵州住房和城乡建设厅官网
  • 网站建设项目前景上海今天新闻综合频道
  • 做网站推销的如何谈客户wordpress怎么做商城
  • 摄影素材库网站服装页面设计的网站
  • 如何用国外网站做头条做个游戏app的费用大概多少
  • 网站 形象入口页福州网站建设网络公司排名
  • 免费下载教学设计的网站送网站建设管理信息内容审核制度
  • 外贸专业网站的公司百度旗下13个app