一、类之间的关系如下图所示:

二、UML与数据库设计主要讨论的内容:

三、依赖关系强调的是类操作间的使用关系,类图到表结构的映射中并不涉及这种关系,所以只需讨论泛化关系、关联关系到表的映身规范。

  1.泛化关系的映射

    (1)、将父类和子类均映射为表

      优点:表结构的更改非常方便

      缺点:表的数量较多,相关的数据分散在不同的表中,数据读写时间较长,报表的生成较为困难。

    (2)、只将子表映射为表

      优点:表的数量较少,相关的数据集中在一个表中,数据的读写较为方便。

      缺点:表结构的修改较为困难,因为修改父类后,要同时修改子类对应的表。

    (3)、只将父类映射为表

      优点:表的数量少,数据读写方便

      缺点:耦合性强,需要增加一列,以表时类的角色,浪费存储空间较多。

    综合:以上三种方法各有所长,在实际应用中,根据具体情况选用。

           一般情况下,建议选用第二种方式,即只将子类映射为表,各表包含子类自身的属性和继承自父类的属性。

  2.关联关系的映射

    关联关系分为一对一关联、一对多关联和多对多关联。

    (1)、一对一关联映射

      将相关的两个类分别映射成两张表,并将任意一张表的主键放入另一张表作为外键。

    (2)一对多关联映射

      将关联的两个类映射为两张表,并将“一”表的主键放在“多”表中作为外键。

    (3)、多对多关联映射

      》为相关联的两个类分别建立两张表

      》再建一个关联表。这个关联表的属性由两部分组成:前两个表的主键,关联本身的属性。

    综合:关联关系要为每一个类生成一个数据库表。

            关系映射:

        1)、一对一、一对多的关系映射为数据库表的主外键关联(一方的主键加入另一方成为外键)

        2)、多多的关系映射:产生第三张表,将两个多方的主键加入其中成为外键,两个外键的组合成为主键。

    利用数据库三范式检查表,从而考察类图的分析是否合理,消除冗余数据。检查数据是否能够反映用例视图的需要;进一步与用户再次确认数据的使用。

uml与数据库设计的更多相关文章

  1. 牛腩新闻系统(一)——UML、数据库设计

    牛腩新闻系统(一)--UML.数据库设计 一.初识牛腩系统 牛腩(Brisket)即牛腹部及靠近牛肋处的松软肌肉,是指带有筋.肉.油花的肉 块.这是一种统称. 若依部位来分,牛身上很多地方的肉都能够叫 ...

  2. 我的敏捷、需求分析、UML、软件设计电子书 - 下载(持续更新中)

    我将所有我的电子书汇总在一起,方便大家下载!(持续更新) 文档保存在我的网站——软件知识原创基地上(www.umlonline.org),请放心下载. 1)软件设计是怎样炼成的?(2014-4-1 发 ...

  3. DBA词典:数据库设计常用词汇中英文对照表

    1. Access method(访问方法):此步骤包括从文件中存储和检索记录. 2. Alias(别名):某属性的另一个名字.在SQL中,可以用别名替换表名. 3. Alternate keys(备 ...

  4. 数据库设计 Step by Step (2)——数据库生命周期

    引言:数据库设计 Step by Step (1)得到这么多朋友的关注着实出乎了我的意外.这也坚定了我把这一系列的博文写好的决心.近来工作上的事务比较繁重,加之我期望这个系列的文章能尽可能的系统.完整 ...

  5. 数据库设计中的Soft Delete模式

    最近几天有点忙,所以我们今天来一篇短的,简单地介绍一下数据库设计中的一种模式——Soft Delete. 可以说,该模式毁誉参半,甚至有非常多的人认为该模式是一个Anti-Pattern.因此在本篇文 ...

  6. 使用django开发博客过程记录1——数据库设计

    1.数据库设计 2.插入测试数据 3.配置相关问题 1.数据库设计 数据库有简单的三张表:Article.Category.Tag以下是代码 # -*- coding:utf-8 -*- from _ ...

  7. 基于SSM的租赁管理系统0.3_20161225_数据库设计

    数据库设计 1. 概念模型 2. 类模型 3. 生成SQL use test; /*========================================================== ...

  8. 第二天ci项目规划 数据库设计

    第二天ci项目规划 数据库设计 商品 + 用户 + 订单 数据库设计思想和方法 关于商品品牌 ,分类 ,属性 如何表示 用一个字段 还是再设计一张表 品牌和商品 是一种信息 还是两种信息 一张表一般只 ...

  9. 优化MySchool数据库设计之【巅峰对决】

    优化MySchool数据库设计 之独孤九剑 船舶停靠在港湾是很安全的,但这不是造船的目的 By:北大青鸟五道口原玉明老师 1.学习方法: 01.找一本好书 初始阶段不适合,可以放到第二个阶段,看到知识 ...

随机推荐

  1. nginx 的安装

    一.必要软件准备1.安装pcre 为了支持rewrite功能,我们需要安装pcre 复制代码代码如下: # yum install pcre* //如过你已经装了,请跳过这一步 2.安装openssl ...

  2. Squid 日志详解

    原文地址: http://www.php-oa.com/2008/01/17/squid-log-access-store.html access.log 日志 在squid中access访问日志最为 ...

  3. 教你50招提升ASP.NET性能(十五):解决性能问题时不要低估UI的价值

    (26)Don’t underestimate the value of the UI when tackling performance problems 招数26: 解决性能问题时不要低估UI的价 ...

  4. 理解 strcpy方法

    char* strcpy(char* strDest, const char* strSrc) { assert((strDest!=NULL) && (strSrc !=NULL)) ...

  5. linux php开启openssl

    1.测试openssl是否安装查看版本  openssl version查看路径  which openssl2.因为要扩展php扩展模块,所以要通过phpize可以建立php的外挂模块find / ...

  6. QProcess调用外部程序方式的差异

    众所周知QProcess类的作用是启动一个外部的程序并与之交互它有三种方式调用外部程序: 1. execute 2. start 3. startDetached 从调用上看: execute是阻塞调 ...

  7. 和Timesten有个约会--Timesten技术专栏系列(一)

    作者: 三十而立 时间:2009年10月03日 12:08:42 本文出自 “inthirties(三十而立)”博客,转载请务必注明作者和保留出处http://blog.csdn.net/inthir ...

  8. MapReduce数据连接

    对于不同文件里的数据,有时候有相应关系,须要进行连接(join),获得一个新的文件以便进行分析.比方有两个输入文件a.txt,b.txt,当中的数据格式分别例如以下 1 a 2 b 3 c 4 d 1 ...

  9. xcode 3.x版本中的Executables 到xcode 4.x中怎么找不到了?

    转自:http://zhidao.baidu.com/question/327868169.html 1 在Scheme处选择Edit Scheme 2 点击Run(Debug) 3 在Argumen ...

  10. 简简单单安装debian桌面工作环境

    linux一般给人的影响是对使用者的要求偏高, 使用者需要自行配置很多相应的系统工作参数,因此,从一定的程度上阻碍了用户去使用它.而本文所介绍的是, 使用者完全可以消除这个障碍,非常简单地安装好自己的 ...