数据库关联映射建表图示(一对多、多对多)

~总结一下数据库的 一对多、多对一、一对一、多对多 关系 以及对应的建表方式~

关联映射:一对多/多对一

存在最普遍的映射关系,简单来讲就如球员与球队的关系;

一对多:从球队角度来说一个球队拥有多个球员 即为一对多

多对一:从球员角度来说多个球员属于一个球队 即为多对一

数据表间一对多关系如下图:

关联映射:一对一

一对一关系就如球队与球队所在地址之间的关系,一支球队仅有一个地址,而一个地址区也仅有一支球队。

数据表间一对一关系的表现有两种,一种是外键关联,一种是主键关联。图示如下:

一对一外键关联:

一对一主键关联:要求两个表的主键必须完全一致,通过两个表的主键建立关联关系

关联映射:多对多

多对多关系也很常见,例如学生与选修课之间的关系,一个学生可以选择多门选修课,而每个选修课又可以被多名学生选择。

数据库中的多对多关联关系一般需采用中间表的方式处理,将多对多转化为两个一对多。

数据表间多对多关系如下图:

【转载】http://hi.baidu.com/websatyr/item/10e3d83766ffb3f42784f481

数据库关联映射建表图示(一对多、多对多),布布扣,bubuko.com

时间: 2024-12-25 09:39:47

数据库关联映射建表图示(一对多、多对多)的相关文章

Unity3D 连接MySQL数据库笔记3-SQL建表

打开  Navicat MySQL管理工具 连接到数据库 选择 test 数据库 点击 查询 输入对应的 sql命令 create table tuser( uname varchar(20) not null primary key, upwd varchar(20) not null ); create table p_info( pkey varchar(15) not null primary key, pname varchar(20) not null, psex varchar(2

EntityFramework Code-First 简易教程(十一)-------从已存在的数据库中映射出表

怎样从一个已存在的数据库中映射表到 entity 实体? Entity Framework 提供了一个简便方法,可以为已存在的数据库里的所有表和视图创建实体类(entity class),并且可以用 DataAnnotation 特性和 Fluent API 来配置. 首先,右键你的 Visual Studio 项目 -> 添加 -> 新建项目: 选择 ADO.NET实体数据模型(ADO.NET Entity Data Model ),并指定模型名称(这个名称将会是 contenxt 类的类名

数据库语句之建表、拷贝数据表

1.数据库建表语句 create table tb_People(id integer primary key, Name varchar(255), Sex varchar(255)) 2.同数据库拷贝数据表 sql: insert into table1 select*from table2(完全拷贝) insert into table1 select distinct*from table2(不重复拷贝); insert into table1 select top 10*from ta

基于ORACLE数据库的循环建表及循环创建存储过程的SQL语句实现

一.概述 在实际的软件开发项目中,我们经常会遇到需要创建多个相同类型的数据库表或存储过程的时候.例如,如果按照身份证号码的尾号来分表,那么就需要创建10个用户信息表,尾号相同的用户信息放在同一个表中. 对于类型相同的多个表,我们可以逐个建立,也可以采用循环的方法来建立.与之相对应的,可以用一个存储过程实现对所有表的操作,也可以循环建立存储过程,每个存储过程实现对某个特定表的操作. 本文中,我们建立10个员工信息表,每个表中包含员工工号(8位)和年龄字段,以工号的最后一位来分表.同时,我们建立存储

Hibernate多对多关系映射(建表)

下边讲述Hibernate多对多关系映射. 多对多关系的表的结构为: 两个实体表,还包含一个关系表,关系表为复合主键,如果要使用Hibernate多对多关系映射,则关系表必须只包含两个字段,如果生成了Hibernate多对多关系映射,则中间关系表不会生成实体(即没有对应的pojo类,更没有其映射文件). 1.建立表 DROP TABLE user_course ; DROP TABLE user ; DROP TABLE course ; CREATE TABLE user ( userid  

数据库设计---关于建表的时候选择横标和竖表(纵表)的一点思考

本文出处:http://www.cnblogs.com/wy123/p/6677073.html 在做数据统计类数据库设计的时候,在考虑数据存储的时候,经常会遇到逻辑上同一个BusinessID对应多个数据点的情况,比如工资表中的员工ID以及各项工资信息,财务表中的各个报表Id和多个数据点之间的信息面对这种情况,如何来设计表结构,是横表,还是竖表,各有那些优缺点,本文将做一个粗浅的分析. 横标和竖表的表现形式 日常生活中也有很多类似的例子,先用一个Excel画一个例子,比如工资表这么做就是“横表

数据库原理之建表三大范式

第一范式:保持列的原子性. 即.列不能再被细分,例如:地址, 当地址不能不被分成城市.国家等的时候,具备原子性: 如果能被分为城市.国家等级别时,不具备原子性. 第二范式:主键和其他列具备联系.(第二范式是第一范式子集) 例如:产品表(编号,订单号,名称,材料编号,材料名称). 从简单理解他们都是不可再分的列,具备原子性,但如果订单号和产品表示没有联系的,那么就应该从中删除. 第三范式:主键和其他列有直接的联系.(第三范式是第二范式子集) 例如:产品表(编号,名称,材料编号,材料名称). 那么材

SQL数据库各种查询建表插入集合-待续持续更新

创建表 drop table student; DROP table Course; DROP table sc; CREATE TABLE student ( sid integer PRIMARY KEY autoincrement,--id sname nvarchar(32),--学生名 age integer,--年龄 sex nvarchar(8)--性别 ); create table Course--课程表 ( cid integer PRIMARY KEY autoincrem

数据库简单练习 建表+select

create table student ( sno int primary key, sname char(20),  sex char(2), birthday datetime, class int )create table teacher ( tno int primary key,  tname char(20), sex char(2),  birthday datetime,  prof char(10), depart char(20))create table course