社区
MS-SQL Server
帖子详情
请问两个外键可否对应同一个主键的问题,谢谢
lj1006
2007-12-15 05:08:40
有表A,主键是bm
有表B,我想把表B的两个字段(bm,dw)都与表A的bm关联,请问如何实现阿,谢谢
...全文
219
5
打赏
收藏
请问两个外键可否对应同一个主键的问题,谢谢
有表A,主键是bm 有表B,我想把表B的两个字段(bm,dw)都与表A的bm关联,请问如何实现阿,谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
中国风
2007-12-15
打赏
举报
回复
举个例子:
物料A
物料A1
物料A2
parent child
A A1
A A2
中国风
2007-12-15
打赏
举报
回复
--可用建外健:
create table T(ID int unique)
create table T2(ID1 int foreign key references T(ID),ID2 int foreign key references T(ID))
benbenkui
2007-12-15
打赏
举报
回复
一个足以
winstonbonaparte
2007-12-15
打赏
举报
回复
你干吗在表B要建两个外键的啊?一个不就行了吗,没必要的
dawugui
2007-12-15
打赏
举报
回复
这个没必要.
同一表,一个字段就可以了.
MyISAM InnoDB 区别
MyISAM InnoDB 区别 InnoDB和MyISAM是许多人在使用MySQL时最常用的
两个
表类型,这
两个
表类型各有优劣,视具体应用而定。基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快, MyISAM 和 InnoDB 讲解 InnoDB和MyISAM是许多人在使用MySQL时最常用的
两个
表类型,这
两个
表类型各有优劣,视具体应用而定。基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持已经外部键等高级数据库功能。 以下是一些细节和具体实现的差别: ◆1.InnoDB不支持FULLTEXT类型的索引。 ◆2.InnoDB 中不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可。注意的是,当count(*)语句包含 where条件时,两种表的操作是一样的。 ◆3.对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引。 ◆4.DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除。 ◆5.LOAD TABLE FROM MASTER操作对InnoDB是不起作用的,解决方法是首先把InnoDB表改成MyISAM表,导入数据后再改成InnoDB表,但是对于使用的额外的InnoDB特性(例如
外键
)的表不适用。 另外,InnoDB表的行锁也不是绝对的,假如在执行一个SQL语句时MySQL不能确定要扫描的范围,InnoDB表同样会锁全表,例如update table set num=1 where name like “%aaa%” 两种类型最主要的差别就是Innodb 支持事务处理与
外键
和行级锁.而MyISAM不支持.所以MyISAM往往就容易被人认为只适合在小项目中使用。 我作为使用MySQL的用户角度出发,Innodb和MyISAM都是比较喜欢的,但是从我目前运维的数据库平台要达到需求:99.9%的稳定性,方便的扩展性和高可用性来说的话,MyISAM绝对是我的首选。 原因如下: 1、首先我目前平台上承载的大部分项目是读多写少的项目,而MyISAM的读性能是比Innodb强不少的。 2、MyISAM的索引和数据是分开的,并且索引是有压缩的,内存使用率就
对应
提高了不少。能加载更多索引,而Innodb是索引和数据是紧密捆绑的,没有使用压缩从而会造成Innodb比MyISAM体积庞大不小。 3、从平台角度来说,经常隔1,2个月就会发生应用开发人员不小心update一个表where写的范围不对,导致这个表没法正常用了,这个时候MyISAM的优越性就体现出来了,随便从当天拷贝的压缩包取出
对应
表的文件,随便放到一个数据库目录下,然后dump成sql再导回到主库,并把
对应
的binlog补上。如果是Innodb,恐怕不可能有这么快速度,别和我说让Innodb定期用导出xxx.sql机制备份,因为我平台上最小的一个数据库实例的数据量基本都是几十G大小。 4、从我接触的应用逻辑来说,select count(*) 和order by 是最频繁的,大概能占了整个sql总语句的60%以上的操作,而这种操作Innodb其实也是会锁表的,很多人以为Innodb是行级锁,那个只是where对它
主键
是有效,非
主键
的都会锁全表的。 5、还有就是经常有很多应用部门需要我给他们定期某些表的数据,MyISAM的话很方便,只要发给他们
对应
那表的frm.MYD,MYI的文件,让他们自己在
对应
版本的数据库启动就行,而Innodb就需要导出xxx.sql了,因为光给别人文件,受字典数据文件的影响,对方是无法使用的。 6、如果和MyISAM比insert写操作的话,Innodb还达不到MyISAM的写性能,如果是针对基于索引的update操作,虽然MyISAM可能会逊色Innodb,但是那么高并发的写,从库能否追的上也是一个
问题
,还不如通过多实例分库分表架构来解决。 7、如果是用MyISAM的话,merge引擎可以大大加快应用部门的开发速度,他们只要对这个merge表做一些select count(*)操作,非常适合大项目总量约几亿的rows某一类型(如日志,调查统计)的业务表。 当然Innodb也不是绝对不用,用事务的项目如模拟炒股项目,我就是用Innodb的,活跃用户20多万时候,也是很轻松应付了,因此我个人也是很喜欢Innodb的,只是如果从数据库平台应用出发,我还是会首选MyISAM。 另外,可能有人会说你MyISAM无法抗太多写操作,但是我可以通过架构来弥补,说个我现有用的数据库平台容量:主从数据总量在几百T以上,每天十多亿 pv的动态页面,还有几个大项目是通过数据接口方式调用未算进pv总数,(其中包括一个大项目因为初期memcached没部署,导致单台数据库每天处理 9千万的查询)。而我的整体数据库服务器平均负载都在0.5-1左右。
4735-数据库系统原理.doc
第一章 1 数据管理技术的发展经历了人工管理、文件系统、数据库和高级数据库四个阶段 2 文件系统的三个缺陷:数据冗余、数据不一致、数据联系弱 3 在文件系统阶段,程序设计处于主导地位;在数据库阶段,数据占据了中心位置 4 数据库管理系统(DBMS)的类型:(1) 层次型[1:N] (2) 网状型[M:N] (3) 关系型 (4) 面向对象型 5 数据描述的三个阶段:(1) 概念设计 (2) 逻辑设计 (3) 物理设计 6 数据联系的三种类型:(1) 一对一联系 (2) 一对多联系 (3) 多对多联系 7 根据数据的抽象级别定义的四种模型: (1) 概念模型:表达用户需求观点的模型,抽象级别最高,主要是ER模型 (2) 逻辑模型:表达计算机实现的模型,主要有层次、网状和关系模型三种,其中关系模型 是主流 (3) 外部模型:表达用户使用观点的模型,供程序使用 (4) 内部模型:表达DB物理结构的模型,与软硬件紧密联系,由DBMS自动实现 8 从用户[应用程序]到数据库之间,DB的数据结构描述有三个层次: (1) 外部模式[型]:用户与数据库系统的接口 (2) 逻辑模式[型]:数据库全部数据和整体逻辑结构的描述 (3) 内模式[型]:数据库在物理存储方面的描述 9 三层模式之间存在着两级映像: (1) 外模式/逻辑模式映像:定义外模式和逻辑模式之间的
对应
性 (2) 逻辑模式/内模式映像:定义逻辑模式和内模式之间的
对应
性 10 数据独立性是指应用程序和数据库的数据结构之间相互独立,包括: 1) 物理数据独立性 - 对内模式的修改不影响逻辑模式,只修改逻辑模式/内模式映像即可 2) 逻辑数据独立性 - 对逻辑模式的修改不影响外模式,只修改外模式/逻辑模式映像即可 11 DBMS的主要功能 (1) 数据库的定义 - 提供的DDL语句 (2) 数据库的操纵 - 提供的DML语句 (3) 数据库的保护:a) 数据库的恢复 b) 数据库的并发控制 c) 数据的完整性 d) 数据的安全性 (4) 数据库的维护:提供的各种工具 (5) 数据字典:存放三级结构定义 12 DBA的主要职责 1) 定义逻辑模式 2) 定义内模式 3) 定义外模式 4) 定义安全性规则 5) 定义完整性规则 6) 数据库的转储与恢复 第二章 1 数据库系统生存期 1) 从软件的规划、研制、实现、投入运行后的维护,直到它被新的软件所取代的整个期间 2) 数据库系统的生存期分为七个阶段: (1) 规划阶段:系统调查、可行性分析、确定总目标 (2) 需求分析阶段:分析业务流程[业务流程图]、确定系统边界、分析数据处理过程[数 据流图]、生成数据字典 (3) 概念设计阶段:概念模型独立于计算机硬件和软件,主要有三个步骤 a 进行数据抽象,设计局部概念模型 b 将局部概念模型综合成全局模型 c 评审 (4) 逻辑设计阶段:把概念模型转换为DBMS可以处理的逻辑模型,主要有五个步骤 a 将概念模型(ER模型)转换为逻辑模型(关系模型) b 设计外模型 c 设计应用程序与数据库的接口 d 评价模型 e 修正模型 (5) 物理设计阶段:完全依赖于给定的硬件环境和数据库产品 (6) 实现阶段:定义数据库结构;数据装载;编制与调试应用程序;数据库运行 (7) 运行维护阶段:主要由DBA完成 2 ER模型到关系模型的转换 1) 实体类型转换:将实体转换为关系模式,实体属性即为关系模式的属性,实体的标识符 为关系模式的键 2) 二元联系类型转换 (1) 1:1联系:在任意一个关系模式中加入另一个关系模式的键[作为
外键
]和联系类型的 属性 (2) 1:N联系:在N端的关系模式加入1端的键[作为
外键
]和联系类型的属性 (3) M:N联系:将联系类型转换为关系模式,其属性为
两个
实体的键和联系类型的属性 第三章 1 FD推理规则:1) 自反性 2) 增广性 3) 传递性 2分解是解决冗余的主要方法。分解之后,能否表示同样的数据,用"无损分解"特性表示 ;能否保持原来的函数依赖关系,用"保持FD"特性表示 3 关系模式的分解标准 "范式 "特点 "分解特征 " " " "无损分解 "保持FD " "1NF "字段是不可再分的原子值 " " " "2NF "非
主键
字段完全依赖
主键
"是 "是 " "3NF "非
主键
字段不能相互依赖 "是 "是 " "BCNF "
主键
之间不能相互依赖 "是 "不一定 " "4NF "消除多值依赖 "是 "不一定 " 第四章 1 基本符号 "操作 "传统 "并( )、交( ) 、差(-)、笛卡尔积(×) " " "扩充 "投影(π)、选择(σ)、连接( )、除(÷) " "运算符 "比较 ">、 、<、 、=、 " " "逻辑 " (与)、 (或)、 (非) " 2 假设数据库
go数据库mysql与redis
MySQL 教程MySQL 是流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。在本教程中,会让大家快速掌握 MySQL 的基本知识,并轻松使用 MySQL 数据库。什么是数据库?数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。每个数据库都有一个或多个不同的 API 用于创建,访问,管理,搜索和复制所保存的数据。我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。所以,现在我们使用关系型数据库管理系统(RDBMS)来存储和管理大数据量。所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。RDBMS 即关系数据库管理系统(Relational Database Management System)的特点:1.数据以表格的形式出现2.每行为各种记录名称3.每列为记录名称所
对应
的数据域4.许多的行和列组成一张表单5.若干的表单组成databaseRDBMS 术语 在我们开始学习MySQL 数据库前,让我们先了解下RDBMS的一些术语:数据库: 数据库是一些关联表的集合。数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。列: 一列(数据元素) 包含了相同类型的数据, 例如邮政编码的数据。行:一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据。冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性。
主键
:
主键
是唯一的。一个数据表中只能包含一个
主键
。你可以使用
主键
来查询数据。
外键
:
外键
用于关联
两个
表。复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。参照完整性: 参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。MySQL 为关系型数据库(Relational Database Management System), 这种所谓的关系型可以理解为表格的概念, 一个关系型数据库由一个或数个表格组成, 如图所示的一个表格: 表头(header): 每一列的名称;列(col): 具有相同数据类型的数据的集合;行(row): 每一行用来描述某条记录的具体信息;值(value): 行的具体信息, 每个值必须与该列的数据类型相同;键(key): 键的值在当前列中具有唯一性。MySQL数据库MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL 是开源的,目前隶属于 Oracle 旗下产品。MySQL 支持大型的数据库。可以处理拥有上千万条记录的大型数据库。MySQL 使用标准的 SQL 数据语言形式。MySQL 可以运行于多个系统上,并且支持多种语言。这些编程语言包括 C、C++、Python、Java、Perl、PHP、Eiffel、Ruby 和 Tcl 等。MySQL 对PHP有很好的支持,PHP 是目前流行的 Web 开发语言。MySQL 支持大型数据库,支持 5000 万条记录的数据仓库,32 位系统表文件最大可支持 4GB,64 位系统支持最大的表文件为8TB。MySQL 是可以定制的,采用了 GPL 协议,你可以修改源码来开发自己的 MySQL 系统。Redis 教程REmote DIctionary Server(Redis) 是一个由 Salvatore Sanfilippo 写的 key-value 存储系统,是跨平台的非关系型数据库。Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库,并提供多种语言的 API。Redis 通常被称为数据结构服务器,因为值(value)可以是字符串(String)、哈希(Hash)、列表(list)、集合(sets)和有序集合(sorted sets)等类型。
mysql 把
主键
当
外键
_mysql
主键
和
外键
那点事
1、
主键
:若某一个属性组(注意是组)能唯一标识一条记录,该属性组就是一个
主键
。
主键
不能重复,且只能有一个,也不允许为空。定义
主键
主要是为了维护关系数据库的完整性。2、
外键
:
外键
用于与另一张表的关联,是能确定另一张表记录的字段。
外键
是另一个表的
主键
,可以重复,可以有多个,也可以是空值。定义
外键
主要是为了保持数据的一致性。3、索引:索引是对表中一个或多个列的值进行排序的结构。1)应该创建索引的列的特...
将一张表的
主键
作为
外键
关联到另一张表中
将一张表的
主键
作为
外键
关联到另一张表中1、
外键
的介绍2、使用Navicat创建
外键
3、
外键
的维护关系设定 1、
外键
的介绍 设置
外键
的作用很明显,就是讲
两个
表的数据产生关联,就比如个人信息表和部门表之间,部门表的部门id就可以作为一个
外键
存放于个人信息表中,除此之外设定
外键
在父子表中的维护关系,可以达到一个类似于级联的操作,就是当父级表(
主键
作为
外键
的表)数据变化时,子表(拿着别的表的
主键
作为自己...
MS-SQL Server
34,576
社区成员
254,587
社区内容
发帖
与我相关
我的任务
MS-SQL Server
MS-SQL Server相关内容讨论专区
复制链接
扫一扫
分享
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章