精华内容
下载资源
问答
  • 数据库中对多的关系设计

    千次阅读 2017-01-19 16:18:24
    数据库中对多的关系设计http://topic.csdn.net/u/20090305/10/79a30e15-859f-40ca-8dc9-71d6351b9b72.html?97182数据库设计多对多关系的几种形态 前言:多对多关系至少需要3个表,我们把个表叫做主表,个叫做...

    数据库中多对多的关系设计

    http://topic.csdn.net/u/20090305/10/79a30e15-859f-40ca-8dc9-71d6351b9b72.html?97182

    数据库设计多对多关系的几种形态  
    前言:多对多关系至少需要3个表,我们把一个表叫做主表,一个叫做关系表,另外一个叫做字典表或者副表(字典表是纪录比较少,而且基本稳定的,例如:版块名称;副表是内容比较多,内容变化的,例如)。  
    按照数据库的增删查改操作,多对多关系的查找都可以用inner join或者select * from 主表 where id in (select 主表id from 关系表)  

    1,角色任命型


    特点:关系表两外键组合无重复纪录,关系表一般不需要时间字段和主键,有一个表是字典类型的表。  
    界面特点:显示主表,用checkbox或多选select设置多选关系。  
    例如:任命版主(用户表-关系表-版块名称表),角色权限控制等,用户是5个版块版主,只要关系表5行纪录就可以确立,关系表的两个外键具有联合主键性质。  
    增加关系:如果没有组合纪录,insert之。  
    删除关系:如果有组合纪录,删除之。  

    2,集合分组型


    特点:同角色任命型类似,关系表两外键组合无重复纪录,关系表一般不需要时间字段和主键。区别是主副表都不是字典表,可能都很大不固定。  
    界面特点:显示主表,用搜索代替简单的checkbox或多选select,或者一条一条的添加。  
    例如:歌曲专集(专集表-关系表-歌曲表)。手机分组(分组表-关系表-手机表)。用户圈子(圈子表-关系表-用户表)。文章标签(文章表-关系表-标签表)  
    增加关系:同版主任命型。  
    删除关系:同版主任命型。  

    3,明细帐型


    特点:关系表可以有重复纪录,关系表一般有时间字段,有主键,可能还有文字型的字段用来说明每次发生关系的原因(消费)。  
    界面特点:显示关系表,用radio或下拉设置单选关系。  
    例如:现金消费明细帐或订单(用户表-订单表-消费原因表),用户可能多次在同一事情上重复消费。积分变化纪录也属于这类。  
    增加关系:不管有没有组合纪录,insert之,纪录时间。  
    删除关系:根据关系表PK删除。  

    4,评论回复型


    特点:同明细帐型关系表一般有时间字段,有主键,区别是重点在文字型的字段用来说明每次发生关系的内容(评论回复)。  
    界面特点:回复文本框。  
    例如:论坛回复(用户表-回复表-帖子表),用户可能多次在不同帖子上评论回复费。  
    增加关系:不管有没有组合纪录,insert之,纪录时间和文字。  
    删除关系:根据关系表(回复表)PK删除。  

    5,站内短信型


    特点:主副表是同一个,关系表一般有时间字段,有主键,重点在关系表文字型的字段用来说明每次发生关系的内容(消息)或者其他标记位来表示文字已读状态时间等。  
    界面特点:回复文本框。  
    例如:站内短信(用户表-短信表-用户表),用户可能给用户群发或者单发,有标记位来表示文字已读状态时间等。  
    增加关系:不管有没有组合纪录,insert之,纪录时间和文字。  
    删除关系:根据关系表(回复表)PK删除。  

    6,用户好友型


    特点:主副表是同一个,同集合分组型,关系表两外键组合无重复纪录,关系表一般不需要时间字段和主键。  
    界面特点:同集合分组型,显示主表,用搜索代替简单的checkbox或多选select,或者一条一条的添加。  
    例如:下载站点的文件,(文件表-关系表-文件表)可以被软件工具打开,软件工具本身也是一种文件,可以被下载。用户的好友,也是用户(用户表-好友关系表-用户表)  
    增加关系:同版主任命型。  
    删除关系:同版主任命型。  

    7,未知属性型


    特点:在设计初期,主表的某些字段类型和名称是不确定的时候,关系表实际上是主表的可扩展字段,  
    一个[主表](ID),  
    一个[属性名称表](属性ID.属性名称),  
    一个[属性值表],包括3个字段:  
      属性值(属性Value varchar(500))  
      主表ID  
      属性ID  
    这样可以作到最小冗余度。  
    (和常见的多对多关系不同的是:值统一用varchar来存储,因为这类型的值一般不会用来计算)。  
    比如:  
    军队的数据库设计中有种物资叫做“战缴物资”,就是打仗的时候缴获的,军队自己都不知道这些物资有什么属性。  
    比如缴获的化学品有化学名,通用名,是否有辐射,计量单位,包装规格,数量等等,或者不是化学品是其他任何未知的东西。  
    这样东西就可以  
    某奇怪东西.属性集合["某某奇怪属性名"]="某某奇怪值";   
    某变态东西.属性集合["某某变态属性名"]="某某变态值";   
    这样存储。  
    再比如:  
    手机型号有几千种,除了共同属性外还有不同属性有几百个,属性名和值类型都不一样,有的手机有这属性,有的没有。  
    对于这样的“多态”,我们就采用上面的设计结构。  
    其效果相当于:  
    某奇怪手机.属性集合["某某奇怪属性名"]="某某奇怪值";  
    某变态手机.属性集合["某某变态属性名"]="某某变态值";  
    界面特点:设置主表一行纪录的属性时候,要列出所有可能的属性名称,每个对应一个文本框。

    展开全文
  • SQL Server-数据库中对多的关系设计

    千次阅读 2020-02-06 09:15:34
    数据库中对多的关系设计 数据库设计多对多关系的几种形态 前言:多对多关系至少需要3个表,我们把个表叫做主表,个叫做关系表,另外个叫做字典表或者副表(字典表是纪录比较少,而且基本稳定的,例如:版块...

    数据库中多对多的关系设计
    数据库设计多对多关系的几种形态 
    前言:多对多关系至少需要3个表,我们把一个表叫做主表,一个叫做关系表,另外一个叫做字典表或者副表(字典表是纪录比较少,而且基本稳定的,例如:版块名称;副表是内容比较多,内容变化的,例如)。 
    按照数据库的增删查改操作,多对多关系的查找都可以用inner join或者select * from 主表 where id in (select 主表id from 关系表) 
    1,角色任命型
     
    特点:关系表两外键组合无重复纪录,关系表一般不需要时间字段和主键,有一个表是字典类型的表。 
    界面特点:显示主表,用checkbox或多选select设置多选关系。 
    例如:任命版主(用户表-关系表-版块名称表),角色权限控制等,用户是5个版块版主,只要关系表5行纪录就可以确立,关系表的两个外键具有联合主键性质。 
    增加关系:如果没有组合纪录,insert之。 
    删除关系:如果有组合纪录,删除之。 
    2,集合分组型
     
    特点:同角色任命型类似,关系表两外键组合无重复纪录,关系表一般不需要时间字段和主键。区别是主副表都不是字典表,可能都很大不固定。 
    界面特点:显示主表,用搜索代替简单的checkbox或多选select,或者一条一条的添加。 
    例如:歌曲专集(专集表-关系表-歌曲表)。手机分组(分组表-关系表-手机表)。用户圈子(圈子表-关系表-用户表)。文章标签(文章表-关系表-标签表) 
    增加关系:同版主任命型。 
    删除关系:同版主任命型。 
    3,明细帐型
     
    特点:关系表可以有重复纪录,关系表一般有时间字段,有主键,可能还有文字型的字段用来说明每次发生关系的原因(消费)。 
    界面特点:显示关系表,用radio或下拉设置单选关系。 
    例如:现金消费明细帐或订单(用户表-订单表-消费原因表),用户可能多次在同一事情上重复消费。积分变化纪录也属于这类。 
    增加关系:不管有没有组合纪录,insert之,纪录时间。 
    删除关系:根据关系表PK删除。 
    4,评论回复型
     
    特点:同明细帐型关系表一般有时间字段,有主键,区别是重点在文字型的字段用来说明每次发生关系的内容(评论回复)。 
    界面特点:回复文本框。 
    例如:论坛回复(用户表-回复表-帖子表),用户可能多次在不同帖子上评论回复费。 
    增加关系:不管有没有组合纪录,insert之,纪录时间和文字。 
    删除关系:根据关系表(回复表)PK删除。 
    5,站内短信型
     
    特点:主副表是同一个,关系表一般有时间字段,有主键,重点在关系表文字型的字段用来说明每次发生关系的内容(消息)或者其他标记位来表示文字已读状态时间等。 
    界面特点:回复文本框。 
    例如:站内短信(用户表-短信表-用户表),用户可能给用户群发或者单发,有标记位来表示文字已读状态时间等。 
    增加关系:不管有没有组合纪录,insert之,纪录时间和文字。 
    删除关系:根据关系表(回复表)PK删除。 
    6,用户好友型
     
    特点:主副表是同一个,同集合分组型,关系表两外键组合无重复纪录,关系表一般不需要时间字段和主键。 
    界面特点:同集合分组型,显示主表,用搜索代替简单的checkbox或多选select,或者一条一条的添加。 
    例如:下载站点的文件,(文件表-关系表-文件表)可以被软件工具打开,软件工具本身也是一种文件,可以被下载。用户的好友,也是用户(用户表-好友关系表-用户表) 
    增加关系:同版主任命型。 
    删除关系:同版主任命型。 
    7,未知属性型
     
    特点:在设计初期,主表的某些字段类型和名称是不确定的时候,关系表实际上是主表的可扩展字段, 
    一个[主表](ID), 
    一个[属性名称表](属性ID.属性名称), 
    一个[属性值表],包括3个字段: 
      属性值(属性Value varchar(500)) 
      主表ID 
      属性ID 
    这样可以作到最小冗余度。 
    (和常见的多对多关系不同的是:值统一用varchar来存储,因为这类型的值一般不会用来计算)。 
    比如: 
    军队的数据库设计中有种物资叫做“战缴物资”,就是打仗的时候缴获的,军队自己都不知道这些物资有什么属性。 
    比如缴获的化学品有化学名,通用名,是否有辐射,计量单位,包装规格,数量等等,或者不是化学品是其他任何未知的东西。 
    这样东西就可以 
    某奇怪东西.属性集合["某某奇怪属性名"]="某某奇怪值";  
    某变态东西.属性集合["某某变态属性名"]="某某变态值";  
    这样存储。 
    再比如: 
    手机型号有几千种,除了共同属性外还有不同属性有几百个,属性名和值类型都不一样,有的手机有这属性,有的没有。 
    对于这样的“多态”,我们就采用上面的设计结构。 
    其效果相当于: 
    某奇怪手机.属性集合["某某奇怪属性名"]="某某奇怪值"; 
    某变态手机.属性集合["某某变态属性名"]="某某变态值"; 
    界面特点:设置主表一行纪录的属性时候,要列出所有可能的属性名称,每个对应一个文本框。

    展开全文
  • 数据库一对一、一对多、多对多关系 一、首先给出三种关系的实例 1、一对一关系实例 一个人对应一张身份证,一张身份证对应一个人 2、一对多关系实例 一个班级拥有多个学生,一个学生只能够属于某个班级 3、多对...
    由于最近在学数据库的东西,又想到了大一是老师交的如何通过数据库关系见表,下面就来说一下这三种关系的使用
    

    数据库一对一、一对多、多对多关系

    一、首先给出三种关系的实例

    1、一对一关系实例

    • 一个人对应一张身份证,一张身份证对应一个人

    2、一对多关系实例

    • 一个班级拥有多个学生,一个学生只能够属于某个班级

    3、多对多实例

    • 一个学生可以选修多门课程,一个课程可以被多个学生选修

    二、1.一对一关系
    在这里插入图片描述
    一对一关系是最好理解的一种关系,在数据库建表的时候可以将人表的主键放置与身份证表里面,也可以将身份证表的主键放置于人表里面

    2、一对多关系
    在这里插入图片描述

    班级是1端,学生是多端,结合面向对象的思想,1端是父亲,多端是儿子,所以多端具有1端的属性,也就是说多端里面应该放置1端的主键,那么学生表里面应该放置班级表里面的主键

    3、多对多关系

    对于多对多关系,需要转换成1对多关系,那么就需要一张中间表来转换,这张中间表里面需要存放学生表里面的主键和课程表里面的主键,此时学生与中间表示1对多关系,课程与中间表是1对多关系,学生与课程是多对多关系

    三、总结

    总而言之,最重要的关系就是1对多关系,根据面向对象思想在建表的时候将1端主键置于多端即可。

    展开全文
  • 关系数据库中,两个表之间的关系: 一、一对多 第一个表中的单个行可以与第二个表中的一个或多个行相关,但第二个表中的一个行只可以与第一个表中的一个行相关。 例如:一个班级有多个学生,但一个学生只能属于一...

    关系数据库中,两个表之间的关系:


    一、一对多

    第一个表中的单个行可以与第二个表中的一个或多个行相关,但第二个表中的一个行只可以与第一个表中的一个行相关。

    例如:一个班级有多个学生,但一个学生只能属于一个班级。

    二、多对一

    例如:多个学生可属于同一个班级。

    三、一对一

    该关系中第一个表中的单个行只可以与第二个表中的一个行相关,且第二个表中的一个行也只可以与第一个表中的一个行相关。

    例如:一支球队仅有一个地址,一个地址也仅有一支球队。

    四、多对多

    该关系中第一个表中的一个行可以与第二个表中的一个或多个行相关。第二个表中的一个行也可以与第一个表中的一个或多个行相关。

    例如:一个学生可选多门选修课,一门选修课可被多个学生选修。


    参考资料:

    http://blog.163.com/zhangv520@126/blog/static/159369772009622173688/ 

    http://www.cnblogs.com/langtianya/archive/2013/03/11/2954832.html


    2016.05.26

    展开全文
  • 关系数据库中,通过...一对多关系一个班级有很多学生,外键维护在学生的一方,也就是多的一方。(在做页面设计的时候,需要把两个表连接到一块查询信息)建立一个student和clazz表clazz id name1 一班2 二班3 ...
  • 今天小编就为大家分享一篇关于Django中数据库的数据关系:一对一,一对多,多对多,小编觉得内容挺不错,现在分享给大家,具有很好参考价值,需要朋友一起跟随小编来看看吧
  • android_Room数据库中的一对多关系

    千次阅读 2020-04-02 09:23:12
    先看遍 带有翻译官方Room数据库讲解 看完官方小姐姐讲解在看下面就简单了很 主要点就是一定要有关联键 关联键值一定要一样 其他就没有啥重要了基本都是CURD(如果你不了解Room基础,请先去...
  • 在关系型数据库中,除了有一对一,一对多外,还有多对多的关系。前两种关系只需要表本身就能表达清楚,然而多对多需要第三张中间表才能表达清楚多对多的关系。 中间表在一般情况下是由三个字段组成: 1、中间表...
  • 数据库实体间有三种对应关系:一对一,一对多,多对多。一对一关系示例:一个学生对应一个学生...一对多关系处理:我们以学生和班级之间的关系来说明一对多的关系处理方法。假设现有基本表学生表(学号,姓名,…...
  • 关系数据库—多对多的关系

    千次阅读 2017-01-12 13:13:22
    对多关系关系数据库中两个表之间的一关系, 该关系中第个表中的一个行可以与第二个表中的一个或多个行相关。第二个表中的一个行也可以与第个表中的一个或多个行相关。 实例解释: 比如在常见订单管理...
  • 现在准备设计一张订单表(order),要求一张订单可能包含个或个商品,而且商品数量不定,那么应该如何设计这个订单表(order)呢? 我自己想到两种方案: 1、再额外设计一张中间表(order-goods)把它们关联...
  • 在关系数据库中,除了一对一,一对多外,还有一个多对多关系.前两个关系都只需要两个表本身就能表达清楚他们之间的关系,而多对多关系则需要第三张中间表来表达清楚两张表之间的关系. 中间表在一般情况下是由三个字段...
  • 何种情况应该算多对多关系,何种又算一对多关系?多对多关系一对多关系数据库中如何设计?
  • 一对多关系、多对一关系和一对一关系至少都有一侧是单个实体,所以记录之间的联系通过外键实现,让外键指向这个实体。但是,你要如何实现两侧都是“多”的关系呢? 下面以一个典型的多对多关系为例,即一个记录学生...
  • 表之间数据的一对多关系: 一个班级对应多个学生一: 建立一个app, 在models.py文件, 创建相关表# 班级表(主表) class Classes(models.Model): cname = models.CharField(max_length=50) cnumber = models....
  • 我们知道,在设计一个JAVA bean的时候,要把这些BEAN 的数据存放在数据库中的表结构,然而这些数据库中的表直接又有些特殊的关系,例如员工与部门直接有一对多的关系,学生与老师直接又多对多的关系,那么这些表的...
  • 数据库中“一对一”、“一对多”、“多对多”判断方法 多对多:一个老师可以教多个学生,一个学生可以有多个老师教。 一对多:一个父亲可以有多个亲生孩子,一个孩子只能有一个生父。 一对一:一个人只能有一张...
  • 数据库实体间有三种对应关系:一对一,一对多,多对多。 一对一关系示例: 一个学生对应一个学生档案材料,或者每个人都有唯一身份证编号。 一对多关系示例: 1.一对多关系处理: 通过学生和班级问题...
  • 数据库一对一 一对多 多对多关系

    千次阅读 2020-06-04 20:09:34
    ‘实体’和‘公理’具有多对多关系,即个实体可以对应多个公理,个公理也可以包含多个实体。 多对多关系需要一张纽带表来实现。 // 实体表格 create table if not exists `entity_management` ( `id` int ...
  • 所以班级 小组 成员 是 一对多对多的关系 这是候可以将 班级的javaBean里面放一个小组 的 List<小组>属性,查询到的小组集合塞进班级的javaBean里面,同理小组和成员也是一样. (穿插记忆:当多表关联查询时,查询...
  • 我们知道,在设计一个Java bean的时候,要把这些BEAN 的数据存放在数据库中的表结构,然而这些数据库中的表直接又有些特殊的关系,例如员工与部门直接有一对多的关系,学生与老师直接又多对多的关系,那么这些表的...
  • 数据库实体间有三种对应关系:一对一,一对多,多对多。一对一关系示例:一个学生对应一个学生档案材料,或者每个人都有唯一的...我们以学生和班级之间的关系来说明一对多的关系处理方法。 假设现有基本表学生表
  • 表之间数据的一对多关系: 一篇文章可以在多个出版社出版, 一个出版社可以出版多篇文章一: 建立一个app, 在models.py文件, 创建相关表class Publication(models.Model): pname = models.CharField(max_length=50...
  • Access如何实现添加一对多关系的的数据,比如一条线对N个点: Line表:线ID,线名, 说明。。。。。。 Point表:点ID,经度,纬度,高程。。。。。。,对应线ID 现在要添加一个线(多个点)到数据库,如何将刚...
  • 供应商,零件数据库,其中“供应商”表S(sno,sname,status,city)分别对应的是供应商代号,供应商名,供应...供应商和零件之间是个多对多的联系,在关系数据库中,多对多联系必须生成关系模式,而该模式的码是...
  •  前言:多对多关系至少需要3个表,我们把个表叫做主表,个叫做关系表,另外个叫做字典表或者副表(字典表是纪录比较少,而且基本稳定,例如:版块名称;副表是内容比较多,内容变化,例如)。  按照...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,919
精华内容 4,367
关键字:

数据库中一对多的关系