`
coconut_zhang
  • 浏览: 531446 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

数据库设计多对多关系的几种形态

阅读更多

前言:多对多关系至少需要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来存储,因为这类型的值一般不会用来计算)。

比如:

军队的数据库设计中有种物资叫做“战缴物资”,就是打仗的时候缴获的,军队自己都不知道这些物资有什么属性。

比如缴获的化学品有化学名,通用名,是否有辐射,计量单位,包装规格,数量等等,或者不是化学品是其他任何未知的东西。
这样东西就可以

某奇怪东西.属性集合["某某奇怪属性名"]="某某奇怪值";
某变态东西.属性集合["某某变态属性名"]="某某变态值";

这样存储。

再比如:

手机型号有几千种,除了共同属性外还有不同属性有几百个,属性名和值类型都不一样,有的手机有这属性,有的没有。
对于这样的“多态”,我们就采用上面的设计结构。
其效果相当于:

某奇怪手机.属性集合["某某奇怪属性名"]="某某奇怪值";
某变态手机.属性集合["某某变态属性名"]="某某变态值";

界面特点:设置主表一行纪录的属性时候,要列出所有可能的属性名称,每个对应一个文本框。

分享到:
评论

相关推荐

    数据库课程设计小型超市管理系统.doc

    本文分析了小型超市管理系统建立的全过程,包括选题简介、需求分析、概念结构设 计、逻辑结构设计和数据库的实施几个部分,对每个部分都进行了详细的介绍。本文可 以作为建立小型超市管理系统的参考,如有不足还会...

    数据库系统基础知识.doc

    主要从数据库的基本概念、关系数据库及其设计概述、数据库技术的 应用领域及发展方向三个方面进行讨论。 1.数据库的基本概念 1.1信息、数据及数据处理 1) 信息 信息是对现实世界中各种事物的存在方式或运动形态的...

    超市商品进销存管理系统数据库设计.pdf

    它可以用少数几种符号综合 图 1—1 为某超市进销存管理系统的进货业务流程图 图 1—2 为某超市进销存管理系统的销售业务流程图 图 1—3 为某超市管理系统顶层数据流程图 地反映出信息在系统中的流动、处理和存储...

    language-简体中文-XFES.xml

    有时候我们即使搭建好了ES集群,但数据存进去后到底是以一个什么形态存在,我们可能也疑惑重重,此时要是有个可视化的管理工具来辅助一下就便易于理解了,因此本文就搜罗了几种 Elasticsearch可视化管理工具并一一...

    计算机二级C语言考试题预测

    (54) 在下列几种排序方法中,要求内存量最大的是(D) 注:要牢记,书中没有提到。 A. 插入排序 B. 选择排序 C. 快速排序 D. 归并排序 (55) 在设计程序时,应采纳的原则之一是(A) 注:和设计风格有关 A. 程序结构应有...

    中国长足寄蝇亚科生物信息综合数据库的设计与实现 (2014年)

    主要从数据建模、数据库表的设计、数据存储、数据检索,以及数据挖掘几个方面介绍长足寄蝇亚科生物信息综合数据库的建设,实现将生物学基础研究全过程的信息通过计算机技术和手段进行综合存储。将生物形态学与分子...

    软件设计规范

    对具体性的解释:组成所有物资的电子、质子、中子是圆的、相同的,但是这些相同的东西组成的原子则有几百种不同。每次量的规模的添加,都导致特殊性的添加。对于软件来说,也是如此。如下的概念是母庸质疑的,软件...

    软件技术专业毕业设计开题报告.doc

    实施方案 1、实施步骤安排 系统需求分析 数据库设计 模块规划分离 模块完功 美工和完善 2、具体实施安排 "项 目 "主要内容 "时 间 " "系统需求分析 "子模块需求及数据表分析 "5天 " "数据库规划设计 "系统数据表的...

    视频会议系统设计方案.doc

    分级的基本视频会议系统 城市有若干个区,市政府有多个直属部门,并和中央、省政府及多家市直属单位有信息 往来,共计终端数在几百个。系统在设计上应充分考虑使用范围的扩展和各级部门在会 议使用上的相对独立性,...

    视频会议系统方案设计方案.doc

    分级的基本视频会议系统 城市有若干个区,市政府有多个直属部门,并和中央、省政府及多家市直属单位有信 息往来,共计终端数在几百个。系统在设计上应充分考虑使用范围的扩展和各级部门在 会议使用上的相对独立性,...

    乐友会员进销存软件 v2.6.16.8.zip

    伴随我国经济的高速增长,近几年以消费升级为主题的零售行业也在内外部条件的支撑下获得了迅猛发展。零售行业形态正逐渐向以连锁经营为特点的现代零售业态转变,因此连锁专卖店在个性化、特色化方面具有更高的要求。...

    基于大数据时代的数据可视化应用分析.docx

    而且数据是有多种形态的,各种数据之间的复杂关系也对数据的采集和分析带来了阻碍,即使在一些大型企业的数据库也有很多不可以处理的数据。大数据的三个主要特征就是海量化、多样化、快速化,人们迫切的想要从海量的...

    java餐饮管理系统源码加数据库-dda-book:领域驱动架构书

    微服务架构几乎成为互联网公司架构的标准形态,我们在讨论如何划分、设计微服务架构,甚至领域驱动设计(DDD)时,我们应该回归初心,当我们开始讨论怎么划分微服务时,我们应该能回答下面的问题: 需要解决的问题是...

    大数据心得体会800字-《大数据》读后感.pdf

    先来看一下完整的商务智能流程:1、通过各种来源的关系型数据库,使用 ELT(提 取、转换、加载)工具,对来自不同系统的数据以统一格式进行清洗、转换、集成进入到 数据仓库。2、锁定目标数据后进行联机分析。通过...

    数据可视化报告.doc

    两张表之间都以excel形式存在,在导入Tableau数据库的时候,建立两表的关系并对 表进行说明。本人在建立过程前引入了一些编号变量,可以进行无视。下面是部分数据 截图,具体数据见随文档上交的excel文件。 可视化...

    数据可视化报告(1).doc

    两张表之间都以excel形式存在,在导入Tableau数据库的时候,建立两表的关系并对 表进行说明。本人在建立过程前引入了一些编号变量,可以进行无视.下面是部分数据截 图,具体数据见随文档上交的excel文件. 可视化工具...

    大数据心得体会(1).doc

    做了几十年的数据仓库甚至海量并行处理的数据库都不能处理那么大 的数据,怎么办?需要范式切换.主要有三个方面,新型的数据与机器关系当中的第一条 就是重新考虑架构与算法,重新考虑舍得,有舍才能得,天下没有...

    大数据心得体会.doc

    做了几十年的数据仓库甚至海量并行处理的数据库都不能处理那么大 的数据,怎么办?需要范式切换。主要有三个方面,新型的数据与机器关系当中的第一 条就是重新考虑架构与算法,重新考虑舍得,有舍才能得,天下没有...

    jdchain-其他

    部署模型:JD Chain 主要部署组件包括以下几种:共识节点共识节点即参与共识的节点,这是系统的核心组件,承担了运行共识协议、管理账本数据、运行智能合约的职责。一个区块链网络由多个共识节点组成,共识节点的...

Global site tag (gtag.js) - Google Analytics