前言:多对多关系至少需要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来存储,因为这类型的值一般不会用来计算)。
比如:
军队的数据库设计中有种物资叫做“战缴物资”,就是打仗的时候缴获的,军队自己都不知道这些物资有什么属性。
比如缴获的化学品有化学名,通用名,是否有辐射,计量单位,包装规格,数量等等,或者不是化学品是其他任何未知的东西。
这样东西就可以
某奇怪东西.属性集合["某某奇怪属性名"]="某某奇怪值";
某变态东西.属性集合["某某变态属性名"]="某某变态值";
这样存储。
再比如:
手机型号有几千种,除了共同属性外还有不同属性有几百个,属性名和值类型都不一样,有的手机有这属性,有的没有。
对于这样的“多态”,我们就采用上面的设计结构。
其效果相当于:
某奇怪手机.属性集合["某某奇怪属性名"]="某某奇怪值";
某变态手机.属性集合["某某变态属性名"]="某某变态值";
界面特点:设置主表一行纪录的属性时候,要列出所有可能的属性名称,每个对应一个文本框。
分享到:
相关推荐
2. **E-R模型**:实体-联系模型(Entity-Relationship Model, E-R模型)是数据库设计中常用的一种概念模型。在GIS数据库设计中,E-R模型可以用来描述空间地理信息的主要实体及其之间的关系。例如,在GIS中常见的实体...
数据字典的核心作用是提供了一种映射关系,使得数据在报表中以用户可理解的方式展现。在FineReport报表工具中,数据字典的设置分为几个步骤: 1. 数据库表的设置:这一过程涉及到选择数据库和相应的表,然后在界面...
Oracle数据库是当前广泛使用的关系型数据库之一,它在医院数字化等领域有着广泛的应用。在数据库运行过程中,可能会遇到需要执行不完全恢复或使用备份控制文件恢复的情况。在这些情况下,Oracle数据库管理员常使用...
根据管理大师格罗鲁斯的定义,服务是由一种或一系列、或多或少具有无形特性的活动所构成的一种过程,这种过程是在客户与员工、有形资源的互动关系中进行的,这些有形资源(有形产品或有形系统)是作为客户问题的解决...
分布式数据库事务处理是一个涉及网络中多个数据库节点的数据操作,要求在保证数据一致性的...移动代理技术通过模拟人类社会的组织形态、协作关系和认知模式,为分布式数据库事务处理算法的设计提供了新的思路和方法。
数据库的设计和构建是为了促进科研人员对生物识别技术的研究,尤其是手指静脉识别技术。在该领域,研究人员会利用这些数据来开发算法,用于提取静脉特征、进行模板匹配以及实现高效的身份验证系统。这些算法可能涉及...
空间数据库管理系统的演变经历了人工管理阶段、文件系统阶段、文件与数据库系统混合管理阶段、全关系型空间数据库管理系统、对象关系数据库管理系统、面向对象的数据库系统等几个阶段。 五、空间实体的地图表示方法...
Access数据库作为一种关系型数据库管理系统,能够通过表格、查询、窗体、报表和宏等多种方式组织和管理这些信息,使其更易于理解和利用。 在这个数据库中,我们可以预见到以下几个关键部分: 1. **药材表**:存储...
SWAT模型是一种综合性的工具,其设计目的是为了模拟长时间序列内流域的水文过程和水质变化情况。它将流域划分为多个子流域,并在这些子流域的基础上,进一步细分为不同的水文响应单元(Hydrologic Response Units, ...
它的起源可以追溯到IBM的圣约瑟研究实验室为关系数据库管理系统SYSTEM R开发的一种查询语言,其早期形态是SQUARE语言。自1981年IBM推出SQL以来,由于其简洁的语法、强大的功能以及易学性,它迅速在各种数据库管理...
总结,这款“宝可梦图鉴”微信小程序毕业设计是一个全面的实践案例,涵盖了移动应用开发的多个环节,无论是对微信小程序的熟悉,还是数据库设计与后端接口开发,都能从中获得实际操作经验。通过学习和研究这个项目,...
以下是对几种常见蛋白质结构数据库的详细介绍。 #### 4.3.1 PDB数据库 - **简介** - PDB(Protein Data Bank)是由美国Brookhaven实验室于1971年建立的大分子结构数据库。 - 它主要收集通过实验(如X射线晶体...
以上知识点涵盖了亚健康中医干预数据库数据结构的多个层面,从基础数据的收集到专业数据的分析处理,再到整体的系统设计考虑,为中医药现代化和信息化提供了理论和技术支持。这对于推动中医学的发展,特别是中医...
标题 "基于ssm停车场微信小程序源码数据库文档.zip" 提供了一个综合性的项目主题,它涉及到几个关键的技术...通过研究和分析这些内容,可以加深对SSM框架、微信小程序开发以及数据库设计的理解,并提升实际项目经验。
- **20世纪80年代**:关系型数据库模型开始流行,这一时期的数据库能够更好地支持事务处理和数据分析。 - **20世纪90年代初**:为了解决大规模数据处理的问题,许多数据库厂商推出了并行数据库系统,这些系统可以在...
综上所述,随着企业对数据管理和处理需求的不断变化,数据库云管平台作为一种创新的服务模式,将在未来几年内迎来快速发展期。通过不断提升其智能化水平、扩展支持的数据源类型,并加强与其他厂商的合作与互补,...
总结来说,这个基于SSM的校车购票系统微信小程序源码及数据库文档,涵盖了Java后端开发、微信小程序前端开发和数据库设计等多个方面,是学习和实践全栈开发的良好案例。开发者可以通过分析源码和数据库文档,了解...
XML数据库专门设计用于存储和检索XML文档,提供对复杂数据结构的支持。 6. **网格数据管理**:网格数据库技术应用于分布式计算环境,如网格计算和云计算,支持大规模数据的共享和协作处理。 7. **DBMS的自适应管理...
综上所述,这款基于SSM的“最多跑一次”微信小程序源码数据库文档,涵盖了后端开发、微信小程序开发、数据库设计等多个方面,对于学习和研究Java Web开发和微信小程序有很高的参考价值。通过对源码的阅读和数据库的...