精华内容
下载资源
问答
  • 数据库物理结构设计

    2021-03-31 16:52:46
    物理结构设计 数据库在物理设备上的存储结构与存取方法称为数据库的物理结构,它依赖于选定的数据库管理系统 为一个给定的逻辑数据模型选取一个最合适的应用要求的物理结构的过程,就是数据库的物理设计。 数据库的...

    物理结构设计

    数据库在物理设备上的存储结构与存取方法称为数据库的物理结构,它依赖于选定的数据库管理系统 为一个给定的逻辑数据模型选取一个最合适的应用要求的物理结构的过程,就是数据库的物理设计。
    数据库的物理设计通常分为二部
    1:确定数据库的物理结构,在关系数据库中主要指存取方法和存储结构。
    2:对物理结构进行评价,评价的重点是时间和空间效率。
    不同的数据库产品所提供的物理环境和存取方法,和存储结构有很大的差别
    能供设计人员使用的设计变量,参数范围也是很不相同的,因此没有通用的物理设计方法可遵循。

    对于数据库查询事务,需要得到如下信息:

    查询的关系。
    查询条件所涉及的属性。
    连接条件所涉及的属性。
    查询的投影属性。
    对于数据更新事务,需要得到如下信息
    被更新的关系。
    每个关系上的更新操作条件所涉及的属性。
    修改操作要改变的属性值。

    关系模式存取方法选择

    关系数据库系统是多用户共享的系统,对同一个关系要建立多条存取路径才能满足多用户的多种应用要求。
    存取方法是快速存取数据库中数据的技术,数据库管理系统一般提供多种存取方法。常用的存取方法为索引方法和聚簇方法。
    B+树索引和hash索引是数据库中经典的存取方法,使用最为普遍。

    展开全文
  • 物理结构设计简介物理结构设计:对于给定的逻辑数据模型,选取一个最适合应用环境的物理结构。简单解释——选择合适的数据库,并设计具体的表、字段、数据类型、索引等。确定物理结构(1)存储结构的设计——即确定每...

    物理结构设计简介

    物理结构设计:对于给定的逻辑数据模型,选取一个最适合应用环境的物理结构。

    简单解释——选择合适的数据库,并设计具体的表、字段、数据类型、索引等。确定物理结构

    (1)存储结构的设计——即确定每个表中有哪些字段,每隔字段用什么数据类型。

    物理结构中,数据的基本存取单位是存储记录。

    确定数据库存储结构时要综合考虑存取时间、存储空间、维护代价三方面的因素。例如消除一切冗余数据虽然能够节约存储空间,但往往会导致检索代价的增加,因此必须进行权衡,选择一个折中方案。

    (2)建立合适的索引。

    (3)数据存放位置的设计

    为了提高性能,可将数据的易变部分、稳定部分、经常存取部分和存储频率较低部分分开存放。

    (4)系统配置的设计

    DBMS产品一般都提供了一些存储分配参数,供设计人员和DBA对数据库进行物理优化。初始情况下,系统都为这些变量赋予了合理的默认值,但是这些值不一定适合每一种应用环境,在进行物理设计时,需要重新对这些变量赋值以改善系统的性能。评价物理结构

    物理结构设计过程中需要对时间效率、空间效率、维护代价和各种用户要求进行权衡,其结果可以产生多种方案,数据库设计人员必须对方案进行细致的评价,从中选择一个较优的方案作为数据库的物理结构。

    评价物理数据库的方法完全依赖于所选用的DBMS,主要是从定量估算各种方案的存储空间、存取时间和维护代价入手,对估算结果进行权衡、比较,选择出一个较优的合理的物理结构。示例

    《教学管理系统》学生表

    展开全文
  • 前言在编码过程中,如果MySQL数据结构设计不好的话,会大大影响开发人员编码效率。比如说MySQL数据库表设计不规范,创建时间字段设计成cjsj,创建者字段设计成cjr或者cjz。这样的数据库表可读性和表意性相当差。下面...

    前言

    在编码过程中,如果MySQL数据结构设计不好的话,会大大影响开发人员编码效率。比如说MySQL数据库表设计不规范,创建时间字段设计成cjsj,创建者字段设计成cjr或者cjz。这样的数据库表可读性和表意性相当差。下面我们就来讲讲如何规范设计数据库结构。

    数据库结构优化

    数据库结构优化的目的有哪些?

    减少数据冗余。

    尽量避免数据维护中出现更新,插入,删除异常。插入异常是指如果表中的某个实体随着另一个实体而存在。更新异常是指如果更改表中的某个实体的单独属性时,需要对多行进行更新。删除异常是指如果删除表中的某一实体则会导致其他实体消失。

    节约数据查询空间。

    假设有一张学生选课表,字段信息如下:

    id ,

    stu_id //学生id,

    stu_name //学生姓名,

    stu_sex //学生性别,

    course_name //课程名称,

    course_point //学分

    插入异常就是当插入几门课程的时候,stu_id和stu_name,stu_sex会为空。如果将stu_id设置为非空,会造成异常。

    更新异常就是当更新某一个课程的学分时,那么这一门科目的选课记录都将要更新。

    删除异常就是当删除某一个课程时,那么这一门科目的选课记录都要删除。

    解决上述异常很简单,设计数据库表时遵循数据库三大范式即可。

    数据库结构设计又分为逻辑设计和物理设计。

    前面说的数据库三大范式可以说是逻辑设计。逻辑设计是根据数据实体之间的逻辑关系对表进行设计。一个好的逻辑设计可以解决数据冗余和数据维护的异常,反之亦然。

    物理设计则是根据所使用的数据库特点进行表结构设计。比如Myisam引擎不支持事务,但是支持并发插入的表级锁,主要应用于select,insert。不适合读写频繁的场景。Innodb支持事务,支持MVCC(多版本并发控制)的行级锁,可以应用事务处理。

    维护优化是指根据实际情况对索引存储结构等进行优化。

    一般数据库结构设计的步骤是:

    1.需求分析:全面了解产品设计的存储需求。存取需求是指数据库要存储什么样的数据,这些数据具有什么特点。数据处理需是指如何对数据库进行读取和写入以及对数据的响应时间有什么样的要求,数据的安全性和完整性需求是数据的生命周期。

    2.进行逻辑设计和物理设计。

    3.维护优化。

    有一些场景,我们需要反范式化设计。比如查询订单信息时,我们肯定是要查询下单的收货人信息。如果我们更改了收货人信息,那么查询订单时,会出现收货人信息不一致的现象。所以我们要在订单表中冗余收货人信息。

    范式化与反范式化

    反范式化设计就是为了性能和读取效率的考虑而适当的对数据库设计范式进行违反,而允许存在少量数据冗余。换句话来说反范式化就是使用空间换时间。

    范式化的优点:

    1.可以减少数据冗余。

    2.范式化的更新操作比反范式化要快。

    3.范式化的表同样比反范式化的表要小。

    范式化的缺点:

    1.关联查询。

    2.更难于索引优化。

    反范式化优点:

    1.减少表的关联。

    2.更好的索引优化,覆盖索引。

    反范式化缺点:

    1.存在数据冗余及数据维护异常。

    2.对数据的修改需要更多的成本。

    如何为表选择字段类型

    在物理设计中,我们要做到可读性,表意性,长名性。

    当我们为表进行物理设计时,常常为对表中的字段选择合适的数据类型进行纠结。当一个列可以选择多种数据类型时,应该优化考虑数字类型,其次是日期或者二进制类型,最后是字符串类型。对于相同级别的数据类型,应该优化考虑占用空间小的数据类型。

    Innodb一页是16K。

    tinyint 占1个字节

    smallint占2个字节

    mediumint占3个字节

    int占4个字节

    bigint占8个字节

    float 占4个字节,非精确

    double占8个字节,非精确

    decimal 每4个字节存9个数据,小数点占1个字节。比如decimal(18,9)需要9个字节来存储,最多支持65个数字。 精确

    year占1个字节

    time占3个字节

    date占3个字节

    datetime占8个字节

    timestamp占4个字节

    以UTF-8为例,中文占3个字节,英文占1个字节。

    下面我们就以字符串和日期类型为例,讲一讲。

    varchar和char中宽度的定义是字符长度。

    varchar用于存储变长字符串,只占用必要的存储空间,最多65535。varchar的最大长度小于255,则占用一个额外字节记录字符串长度。大于255,则占用2个额外字节用于记录字符串长度。在mysql老版本的时候,修改varchar的长度会锁表。在mysql5.7之后,修改之后不超过255,是不会锁表。

    varchar的适用场景:

    1.字符串的最大长度比平均长度大很多。

    2.字符串很少被更新。

    3.使用了多字节字符集来存储字符串。

    char类型的存储特点:

    1.char类型是定长的。

    2.字符串存储在char类型的列中会删除末尾的空格。

    3.最大宽度为255。

    char适用的场景:

    1.char类型适用于存储所有长度近似的值。

    2.char类型适合存储短字符串。

    3.char类型适用存储经常更新的字符串,可以避免形成存储碎片。

    datetime类型以YYYY-MM-DD HH:MM:SS.[fraction]格式存储日期时间。

    datetime = YYYY-MM-DD HH:MM:SS

    datetime(6)=YYYY-MM-DD HH:MM:SS.fraction

    datetime类型与时区无关,占用8个字节来存储时间。

    时间范围为1000-01-01 00:00:00 ~9999-12-31 23:59:59

    timestamp占用4个字节,代表的时间为格林威治时间。时间范围是1970-01-01到2038-01-19。timestamp类型显示依赖于所指定的时区。在行的数据被修改时,可以自动修改timestamp列的值。如果一行记录有多个timestamp的字段,那么修改该记录时只有第一个timestamp类型的字段会自动更新时间。我们可以在定义timestamp类型字段时加上default current_timestamp on update current_timestamp

    date占用的字节数要比使用字符串、datetime、int存储的要少。使用date类型只需要3个字节。使用date类型还可以利用日期时间函数进行日期相关的计算。时间范围为1000-01-01~9999-12-31

    time类型用于存储时间数据,格式为HH:mm:ss

    我们在存储日期格式相关的数据时,要注意以下几点:

    1.不要使用字符串类型来存储日期时间数据。

    2.日期时间类型通常要比字符串占用的存储空间小。

    3.日期类型在进行查询过滤时,可以利用日期来进行对比,避免隐式转换造成索引全盘扫描。

    4.日期时间类型有丰富的处理函数,可以更加方便对日期类型数据进行日期过滤。

    5.使用int存储日期时间还不如使用timestamp类型。

    我们可以创建测试表,来测试不同日期类型的查询速度。

    create table `date_demo`

    (

    id int(11) not null auto_increment,

    `time` TIME not null,

    `timestamp` TIMESTAMP not null,

    `datetime` datetime not null,

    `date` date not null,

    `int_date` bigint(20) not null,

    primary key (`id`),

    key `idx_time`(`time`),

    key `idx_timestamp`(`timestamp`),

    key `idx_datetime`(`datetime`),

    key `idx_date`(`date`),

    key `idx_int_date`(`int_date`)

    )

    为了更加直观的看见结果,我们插入200w测试数据。

    public static void test() {

    try {

    long start = System.currentTimeMillis();

    String url = "jdbc:mysql://127.0.0.1:3306/groupon?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false";

    String username = "root";

    String password= "root";

    String driver = "com.mysql.jdbc.Driver";

    Class.forName(driver);

    Connection conn = DriverManager.getConnection(url, username, password);

    StringBuffer sqlBuffer = new StringBuffer();

    sqlBuffer.append("insert into date_demo (time,timestamp,datetime,date,int_date) values(now(),now(),now(),now(),now())");

    for (int i = 1; i <= 1999; i++) {

    sqlBuffer.append(" ,(now(),now(),now(),now(),now()) ");

    }

    PreparedStatement pstmt = conn.prepareStatement(sqlBuffer.toString());

    for (int i = 1; i <= 500; i++) {

    int result = pstmt.executeUpdate();

    System.out.println("result=" + result);

    }

    pstmt.close();

    conn.close();

    long end = System.currentTimeMillis();

    System.out.println("cost=" + (end - start) + "ms");

    } catch (Exception e) {

    e.printStackTrace();

    }

    }

    time查询时间为0.233s

    select * from date_demo

    where time = '23:13:09'

    f662439bcbb9?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

    image.png

    timestamp查询时间为0.230s

    select * from date_demo

    where `timestamp` = '2018-10-28 23:13:09'

    f662439bcbb9?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

    image.png

    datetime查询时间为0.242s

    select * from date_demo

    where datetime = '2018-10-28 23:13:09'

    f662439bcbb9?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

    image.png

    date查询时间为0.221s

    select * from date_demo

    where date = '2018-10-28' limit 9

    f662439bcbb9?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

    image.png

    int查询时间为0.211s

    select * from date_demo

    where int_date = 20181028231309

    f662439bcbb9?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

    image.png

    查询速度从快到慢如下:bigint> date>timestamp>time>datetime(仅供参考)

    尾言

    大家好,我是cmazxiaoma(寓意是沉梦昂志的小马),感谢各位阅读本文章。

    小弟不才。

    如果您对这篇文章有什么意见或者错误需要改进的地方,欢迎与我讨论。

    如果您觉得还不错的话,希望你们可以点个赞。

    希望我的文章对你能有所帮助。

    有什么意见、见解或疑惑,欢迎留言讨论。

    最后送上:心之所向,素履以往。生如逆旅,一苇以航。

    f662439bcbb9?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

    saoqi.png

    展开全文
  • 本文主要介绍了在数据库结构设计过程中需要考虑的一些问题,来源于以往工作、项目经历以及网络资料等,如果有不准确的地方,欢迎指正交流。在数据库结构的设计过程中,务必注意以下两点:减少数据冗余,节约数据库...

    本文主要介绍了在数据库结构设计过程中需要考虑的一些问题,来源于以往工作、项目经历以及网络资料等,如果有不准确的地方,欢迎指正交流。

    在数据库结构的设计过程中,务必注意以下两点:

    减少数据冗余,节约数据库存储空间;

    尽量避免在数据维护过程中出现更新、插入、删除异常。

    一般我们按照如下步骤开始:

    1、 需求分析:全面了解产品设计的存储需求,保证数据的安全性和完整性

    2、 逻辑设计:设计数据的逻辑存储结构,处理数据实体之间的逻辑关系,解决数据冗余和数据维护异常

    3、 物理设计:根据具体所使用数据库的特点进行表结构设计

    4、 维护优化:根据实际情况,对索引、存储结构等进行优化

    其中 1、2 是确立大方向;3 是对 1、2 的具体实施(本文会介绍一些注意事项和建议,详见下文);4 是后期的迭代优化。

    1. 如何进行物理设计

    1.1. 定义数据库、表、字段的命名规范

    可读性

    表意性

    长名

    1.2. 选择合适的存储引擎

    1.2.0. 如何选择

    1、 首选 InnoDB,适用于大部分场景

    2、 参考因素:事务、备份、崩溃恢复、各存储引擎的专有特性(详见下文)

    3、 注意:尽量不要混合使用多种存储引擎

    1.2.1. MyISAM

    v5、5 之前默认

    文件组成

    .frm 表结构

    .MYD 数据

    .MYI 索引

    特性

    表级锁

    基本的表损坏修复,非事务性,会造成数据丢失

    支持「全文索引」

    支持数据压缩(压缩之后只支持读操作)

    限制

    小于 v5.0 版本时,单表默认大小 4G

    大于 v5.0 版本,单表默认 256TB

    适用场景

    非事务型应用

    只读类应用(如:数据报表)

    空间类应用(如:GPS)

    1.2.2. InnoDB

    v5、58 之后默认

    使用表空间进行数据存储,通过配置参数 innodb_file_per_table

    ON 独立表空间(v5.6 之后默认)

    tablename.ibd 数据

    tablename.frm 表结构

    OFF 系统表空间

    ibdata[1 ~ n]

    特性

    事务性存储引擎

    完全支持事务的 ACID 特性

    日志

    Redo Log 已提交的事务

    Undo Log 未提交的事务

    支持行级锁

    可以最大程度支持并发

    由存储引擎层实现

    关于锁

    主要作用是管理共享资源的并发访问

    用于实现事务的隔离性

    常用类型

    共享锁(读锁)

    独占锁(写锁)

    常用锁粒度(策略)

    表级

    行级

    其它

    阻塞

    死锁

    状态检查

    show engine innodb status

    1.2.3. CSV

    文件组成

    .CSV 表内容

    .CSM 表的元数据,如表状态、数据量

    .frm 表结构

    特性

    数据以文本方式存储在文件中

    所有列不能为 NULL

    不支持索引(不适合大表、在线处理)

    对数据文件直接编辑

    适用场景

    数据交互的中间表

    1.2.4. ARCHIVE

    以 zlib 对表数据进行压缩,磁盘 I/O 更少

    文件组成

    .ARZ 数据

    .frm 表结构

    特性

    只支持 insert 和 select 操作

    只支持在自增 ID 列上添加索引

    适用场景

    日志和数据采集类

    1.2.5. MEMORY

    也被称为 HEAP 存储引擎,所有数据保存在内存中

    文件组成

    .frm 表结构

    特性

    支持的索引类型

    HASH(默认,适用于:等值查找)

    BTree(适用于:范围查找)

    所有字段都是固定长度

    不支持 BLOG 和 TEXT 等大字段

    使用表级锁

    单表大小由参数 max_heap_table_size 决定(默认 16M)

    适用场景

    查找或映射类,如:邮编和地区对应

    保存数据分析中产生的中间表

    缓存周期性聚合数据的结果表

    ⚠️ 注意:

    数据易丢失,所以要求数据是可再生的。

    1.2.6. FEDERATED ?

    默认禁止,启用需要在启动时追加 federated 参数(federated=1)

    特性

    提供了访问远程 MySQL 服务器上表的方法

    本地不存储数据,数据全部存放在远程服务器上

    本地需要保存表结构和远程服务器的连接信息

    适用场景

    偶尔的统计分析及手工查询

    1.3. 为表中字段选择合适的数据类型

    1.3.1. 基本原则

    当一个列可以选择多种数据类型时,应该优先选择数字类型,其次是日期或二进制类型,最后是字符类型。

    对于相同级别的数据类型,应该优先选择占用空间小的。

    1.3.2. 整数类型

    列类型

    存储空间

    取值范围(SIGNED)

    取值范围(UNSIGNED)

    tinyint

    1 个字节

    -128 ~ 127

    0 ~ 255

    smallint

    2 个字节

    -3276 ~ 3276

    0 ~ 65535

    mediumint

    3 个字节

    -8388608 ~ 8388607

    0 ~ 16777215

    int

    4 个字节

    -2147483648 ~ 2147483647

    0 ~ 4294967295

    bigint

    8 个字节

    -9223372036854775808 ~ 9223372036854775807

    0 ~ 18446744073709551615

    ⚠️ 注意:

    整型默认 SIGNED 有符号

    后面括号中的数字,表示的是显示宽度,不表示长度,参见这篇文章:MySQL int(M) 中 M 的作用

    1.3.3. 实数类型

    列类型

    存储空间

    是否精确类型

    float

    4 个字节

    double

    8 个字节

    decimal

    每 4 个字节存 9 个数字,小数点占一个字节

    1.3.4. 字符串类型

    varchar

    特点

    存储变长字符串,只占用必要的存储空间

    列的最大长度小于 255,则只占用一个字节用于记录字符串长度。

    列的最大长度大于 255,则要占用两个字节用于记录字符串长度。

    长度(宽度)问题

    使用最小的符合需求的长度(根据实际情况,保留一定的空间)

    适用场景

    列的最大长度比平均长度大很多

    列很少被更新

    使用了多字节的字符集存储字符串

    char

    特点

    定长

    末尾的空格会被删除

    最大宽度 255

    适用场景

    适合存储长度近似的值

    短小的字符串

    存储经常被更新的字符串

    1.3.5. 日期类型

    datetime

    精度

    秒 v5.6 之前

    微妙 v5.6 之后 datime(6)

    与时区无关

    占用 8 个字节存储长度

    时间范围 1000-01-01 00:00:00 到 9999-12-31 23:59:59

    timestamp

    只占用 4 个字节

    时间范围 1970-01-01 到 2038-01-19

    依赖于指定的时区

    在行的数据被修改时,可以自动修改 TIMESTAMP 列的值。

    MySQL v5.6 新增了 date(只需要 3 个字节)、time ,可根据需要了解。

    ⚠️ 注意:

    不要使用字符串类型来存储日期数据

    使用 int 存储日期时间不如直接使用 timestamp 类型

    1.4. 建立数据库结构

    根据前 3 点给出的建议和注意事项,结合具体业务,依次建立每一个数据表。

    2. 关于范式化

    2.1. 什么是三范式

    第一范式

    表中所有字段都只具有单一属性

    单一属性的列由基本的数据类型所构成

    设计出来的表都是简单的二维表

    第二范式

    以「第一范式」为基础

    一个业务表中只能有一个业务主键

    第三范式

    以「第二范式」为基础

    每一个非主属性既不部分依赖也不传递依赖于业务主键

    2.2. 什么是反范式化

    以空间换时间,进行适当的冗余,以提高查询效率

    2.3. 如何选择

    对比优缺点如下,建议根据业务需要合理的结合二者使用 。

    范式化

    优点

    可以尽量的减少数据冗余

    更新操作比「反范式化」更快

    数据表通常比「反范式化」的更小

    缺点

    查询需要关联多个表

    索引优化困难

    反范式化

    优点

    减少表的关联

    更好的进行索引优化

    缺点

    存在数据冗余及数据维护异常

    对数据对修改需要更多成本

    展开全文
  • 主要学习如下内容 一、数据库和SQL概述:了解何谓数据库、何谓SQL,以及MySQL的简单介绍。 二、数据定义语言DDL:讲解如何创建表、重命名表、删除表和更新表。 三、数据操作语言DML:讲解如何插入、更新和删除数据...
  • 应该建索引的原则在经常需要搜索的列上建立索引。在主关键字上建立索引。在经常用于连接的列上建索引,即在外键上建立索引。在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的。...
  • 什么是物理设计根据所选择的关系型数据库的特点对逻辑模型进行存储结构设计。MySQL数据库物理设计涉及的内容1、定义数据库、表及字段命名规范命名要遵守可读性原则。比如使用下划线来分割不同的单词等遵守表意性原则...
  • 数据库设计之物理结构设计

    万次阅读 2018-07-03 10:58:59
    为一个给定的逻辑数据模型选取一个最适合应用要求的物理结构的过程,就是数据库的物理设计。 一、数据库的物理设计 确定数据库物理结构,在关系数据库中主要指存取方法和存储结构。 对物理结构进行评价,...
  • 数据库物理设计的步骤 确定数据库的物理结构 RDBMS中的主要指存取方法和存储结构 对物理结构进行评价 重点是时间和空间效率 IF 满足原设计要求 THEN 进入到物理实施阶段 ELSE ( 重新设计 OR 修改物理结构 OR 返回...
  • 数据库设计:物理结构设计

    千次阅读 2017-01-02 21:09:59
    物理结构设计 数据库的物理设计通常分为两步: 确定数据库的物理结构  对物理结构进行评价,评价的重点是时间和空间效率  1.确定数据库的物理结构 (1)确定数据的存储结构 确定数据库存储结构时要综合考虑...
  • 数据库物理设计阶段的任务是根据具体计算机系统(DBMS和硬件等)的特点,为给定的数据库模型确定合理的存储结构和存取方法。所谓的“合理”主要有两个含义:一个是要使设计出的物理数据库占用较少的存储空间,另一个对...
  • 下面这位大佬写的非常棒,建议收藏 转载一个大佬的总结
  • Oracle数据库物理结构

    2014-05-06 15:33:00
    Oracle数据库物理结构  oracle的数据,实际上是以文件的形式来保存的,文件中出了保存用户的数据之外,还需要保存管理数据和日志数据等等。作为一个DBA,必须需要知道自己的数据分别保存在什么位置上,而且经验丰富的...
  • Log blocks 请点击输入图片描述 log block结构分为日志头段、日志记录、日志尾部 Block Header,占用12字节 Data部分 Block tailer,占用4字节 Block Header 这个部分是每个Block的头部,主要记录的块的信息 Block ...
  • 数据库结构设计(逻辑设计和物理设计)

    万次阅读 多人点赞 2018-11-15 12:28:27
    1、数据库结构设计的步骤 需求分析:全面了解产品设计的存储...物理设计:根据所用的数据库特点进行表结构设计 关系型数据库:Oracle、SQLServer、MySQL、postgresSQL 非关系型数据库:mongo、Redis、Hadoop ...
  • 1、数据流物理设计的工作过程在数据库物理结构中,数据的基本单位是数据记录,记录以文件的形式进行存储,,一条存储记录对应关系模式中的一条逻辑记录,并且文件当中还需要记录存储记录的结构信息,比如字段长度...
  • 数据库物理设计阶段的任务是根据具体计算机系统(DBMS和硬件等)的特点,为给定的数据库模型确定合理的存储结构和存取方法。所谓的“合理”主要有两个含义:一个是要使设计出的物理数据库占用较少的存储空间,另一个对...
  • 数据库物理设计

    千次阅读 2018-04-22 09:08:33
    物理设计就是根据所选择的关系型数据库的特点对逻辑模型进行存储结构设计。它涉及的内容包含以下4方面:1. 定义数据库、表及字段的命名规范;2. 选择合适的存储引擎;3. 为表中的字段选择合适的数据类型;4. 建立...
  • 数据库 - 物理设计

    万次阅读 2015-05-08 10:39:29
    为一个给定的逻辑数据模型选取一个最适合应用环境的物理结构的过程,就是数据库的物理设计数据库物理设计的步骤 确定数据库的物理结构,在关系数据库中主要指存取方法和存储结构 对物理结构进行评价,评价的重点是...
  • 数据库数据库物理设计

    千次阅读 2019-09-03 09:30:53
    为一个给定的逻辑数据模型选取一个最合适应用要求的物理结构的过程,称为数据库的物理设计。物理设计的目的是有效地实现逻辑模式,确定所采取的存储策略。此阶段是以逻辑设计的结构作为输入,并结合具体DBMS的特点与...
  • 数据库设计是应用程序设计的一个很重要的部分,在数据库设计方面我们可以做的是在硬件,软件,高层设计上面,高层设计具体是物理层面的设计,包括数据结构、索引、和存储结构;以及逻辑层面的设计,包括水平和垂直...
  • 文章目录1. 数据库设计概述1.1 数据库设计的特点:结构和行为分离的设计1.2 ... 概念结构设计3.1 概念模型3.2 E-R模型1、实体之间的联系2、E-R 图3、实体与属性的划分原则4、E-R 图的集成4. 逻辑结构设计(未完待...
  • 将需求分析得到的用户需求抽象为信息结构(即概念模型)的过程就是概念结构设计,最后生成的模型是E-R图。 注: 1、先写局部E-R图,再写整体的E-R图 2、若所设计系统的实体、属性与联系很多,绘制出来的总E-R图过于...
  • 数据库结构优化目的: 减少数据冗余 尽量避免数据维护中出现更新,插入和删除异常 插入异常:如果表中的某个...数据库结构优化设计步骤: 需求分析:全面了解产品设计的存储需求、存储需求、数据处理需求、数...
  • 数据库——数据库结构设计

    千次阅读 2020-03-08 22:21:25
    3 数据库物理设计 数据库概念设计 概念设计 是数据库设计的 核心环节,通过对用户需求进行综合;归纳;与抽象,形成一个独立于DBMS 的概念模型 数据库概念设计的目标 1 定义与描述应用领域设计的数据范围 2 获取信息...
  • 数据库原理(十 )- 物理结构设计前言 前言

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,032
精华内容 812
关键字:

数据库物理结构设计