相关文章推荐
不拘小节的领带  ·  31. Caching·  4 月前    · 
八块腹肌的四季豆  ·  Workflow Email ...·  6 月前    · 
孤独的领结  ·  Spring ...·  1 年前    · 

第一种分类: 一对一 (详述一对一关系及其实现)

(一对一,几乎不使用。所以,我们就一句话带过。)

一对一的实现:既可以把表A的主键充当表B的外键,也可以把表B的主键充当表A的外键。

一对多 和 多对多 才是我们学习的重点。

第二种分类:一对多 (详述一对多关系及其实现)

一对多事怎么实现的?

表A(一)与表B(多)(我们现在希望,表A中的一条记录对应表B中的多条记录)之间要是有关系,就必须要有外键。把表A的主键添加到表B里面,充当表B的外键。

一对多的实现:在多的一方的表里面,添加外键。

第三种分类:多对多 (详述多对多关系及其实现)

现实中,什么事物和什么事物之间是多对多的关系?

班级和老师的关系。(一个班级有很多老师上课,一个老师可以去很多班级上课。)

多对多其实就是:一对多 和 多对一 的一个组合。

多对多的实现:多对多 必须要通过单独的一张表来表示。

  • 班级是一张表
  • 教师是一张表
  • 班级和教师的关系也是一张表

用一个实例来解释 多对多。

--班级表
create table banji
    banji_id int primary key,
    banji_num int not null,
    banji_name nvarchar(100)
create table jiaoshi
    jiaoshi_id int primary key,
    jiaoshi_name nvarchar(200)
--第三张表:用来模拟班级和教师的关系
create table banji_jiaoshi_mapping
    banji_id int constraint fk_banji_id foreign key references banji(bianji_id),
    jiaoshi_id int foreign key references jiaoshi(jiaoshi_id),
    kecheng nvarchar(20),
    constraint pk_banji_id_jiaoshi_id primary key (banji_id, jiaoshi_id, kecheng)

解释代码:

其中banji_id int constraint fk_banji_id foreign key references banji(bianji_id), 代码中的 fk_banji_id 是约束的名字,foreign key references banji(bianji_id) 指的是:当前这个表里面的 banji_id 属性是来自 banji 表的主键 banji_id,也就是说:当前表中的 banji_id 是一个外键(foreign key)。

其中jiaoshi_id int foreign key references jiaoshi(jiaoshi_id),里面,这里没有命名约束的名字,约束的名字可以省略不写,所以这里没有写也没有问题。同理上面那句代码。

其中constraint pk_banji_id_jiaoshi_id primary key (banji_id, jiaoshi_id, kecheng)中的 pk_banji_id_jiaoshi_id 这个是约束的名字。primary key (banji_id, jiaoshi_id, kecheng) 是设置jiaoshi_idbanji_idkecheng 三个属性的组合是一个主键primary key)。

现在执行,生成了3个表。

现在我们在这3个表里面插入数据。

banji

jiaoshi

banji_jiaoshi_mapping

都不会有错误,说明多对多生成成功。

请访问:http://www.aobosir.com/

我的电脑系统:Windows 10 64位SQL Server 软件版本: SQL Server 2014 Express什么是关系定义:表和表之间的联系。实现方式:通过设置不同形式的外键来体现表和表的不同关系。关系的分类(假设是A表和B表)第一种分类: 一对一 (详述一对一关系及其实现)(一对一,几乎不使用。所以,我们就一句话带过。) 一对一的实现:既可以把表A的主键充当表B的外键
在EF里,我们设计模型时,会设计到多对多关系,在EF里会把这种关系会转成两个一对多关系表,这是比较友好的,因为多对多来说,对于业务本身没什么意思,所以隐藏了,没什么坏处,但对于这个隐藏来说,对开发人员来讲你就无法主动控制这张关系表了,而需要使用EF的update来更新主表的同时去更新关系表,这对于初学者会出现一些问题,今天说的就是多对多关系无法更新和插入的问题. public partial class WebManageRoles : Lind.DDD.Domain.Entity public WebManageRoles() this.WebManageMenus
一对一:(唯一的 key 和唯一的 value 对应) keyA – valueA 一对多:(唯一的 key 和 多个 value 对应,同时这些 value 只与该 key 对应) keyA – valueAkeyA – valueB 多对一:(多个 key 与唯一的 value 对应) keyA – valueA
JPA和HIBERNATE均属于ORM框架,两者在使用上也很相似,尤其是原理上。除了这两种操作DB的工具外,我们还可能使用到Serialization 、JDBC、ODB 、EJB2 、JDO等。 此处仅简单通过JPA插入一对关系数据进行了解JPA的使用。对于一对多关系,从Object角度将,关系可能维护在多的一方,也可能维护在一的一方;从DBTable的角度将,则是多的一方维护着关系。而OR...
//添加一的数据 var category = new Category{Name="类别1"}; category = context.Categories.Add(category); //添加多的数据 for(var i = 0; i < 2...
转自:https://blog.csdn.net/u013144287/article/details/79024130  本来数据库一对一一对多多对多关系并不复杂,但是最近在理解的时候感觉又感觉多了写新意,所以现在在来总结一下吧 一、首先给出三种关系的实例 1、一对一关系实例    * 一个人对应一张身份证,一张身份证对应一个人 2、一对多关系实例    * 一个班级拥有多个学生,一个学生...
一对多关系实例:1.一个母亲可以有很多孩子,一个孩子只有一位亲生母亲。 ​ 2.一个员工有一个部门,1个员工关联一个部门,一个部门可以拥有多个员工,但一个员工只能关联一个部门。 多对多关系实例:1.一位老师可以教导多个学生,一个学生可以被多个老师教导。 ​ 2.一个学生可以选择多门课程,一门课程可以被多个学生选中。 一对一关系: ​ 一对一关系是最简 键/值编码中的基本调用包括-valueForKey:和-setValue: forKey: 这两个方法,它们以字符串的形式向对象发送消息,字符串是我们关注属性的关键。 是否存在setter、getter方法,如果不存在,它将在内部查找名为_key或key的实例变量。通过KVC,可以获取不存在getter方法的对象值,无需通过对象指针直接访问。 需要注意的是:当...
SQL Server数据库可以通过使用事务(Transaction)同时更新多张表数据。事务是数据库操作的基本单位,具有ACID(原子性、一致性、隔离性、持久性)特性,可以保证多个更新操作的原子性和一致性。 在SQL Server中,可以使用BEGIN TRANSACTION开始一个事务,使用COMMIT TRANSACTION提交事务,或者使用ROLLBACK TRANSACTION回滚事务。当多张表需要同时更新数据时,可以使用以下语法编写事务代码: BEGIN TRANSACTION UPDATE Table1 SET Column1 = 'NewValue' WHERE Condition1 UPDATE Table2 SET Column2 = 'NewValue' WHERE Condition2 UPDATE TableN SET ColumnN = 'NewValue' WHERE ConditionN COMMIT TRANSACTION 在以上示例中,需要更新的表和条件可以根据实际情况进行修改,多个UPDATE语句可以根据需要添加,同时必须确保所有更新操作都符合事务的ACID特性。 需要注意的是,事务的使用可能会增加数据库的负担和延迟响应时间,因此需权衡取舍。此外,事务的范围应该尽可能的小,只包含必要的操作,以减少对数据库的影响。
SQL Server(解决问题)已成功与服务器建立连接,但是在登录过程中发生错误。(provider: Shared Memory Provider, error:0 - 管道的另一端上无任何进程。 112719 SQL Server(解决问题)已成功与服务器建立连接,但是在登录过程中发生错误。(provider: Shared Memory Provider, error:0 - 管道的另一端上无任何进程。 Qingxing123456: 已解决,谢谢博主表情包