
数据库的N-和S+图是用于设计关系型数据库中的重要工具,N-图用于描述关系之间的规范化,而S+图用于描述关系之间的范式和依赖关系。以下是设计N-和S+图的步骤:
1 确定实体和属性。识别需要存储在数据库中的实体和属性。实体是数据的对象,属性是描述实体的特征。
2 建立实体间的联系。识别实体之间的关系,例如一对一、一对多、多对多等关系。
3 设计N-图。N-图用于规范化数据,通过将数据分解成更小的关系来减少数据冗余和提高数据一致性。根据实体之间的依赖关系,将所有属性分配到最小的数据集合中,确保每个关系只包含可以被唯一标识的实体属性。
4 设计S+图。S+图描述关系的第一范式(1NF)、第二范式(2NF)和第三范式(3NF),确保所有关系都在规范化和归一化的状态下。根据实体之间的依赖关系,将属性组合成关系,确保在每个关系中只有一个主键和无冗余信息。
设计N-和S+图需要深入了解数据库设计原则和规范化原则,并根据具体的业务需求进行定制化。此外,设计过程中也需要考虑数据安全性和可扩展性等问题,以确保数据库的高效和可靠。
数据库设计主要包括需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库的实施和数据库的运行和维护,具体内容如下:
1、需求分析
内容:调查和分析用户的业务活动和数据的使用情况,弄清所用数据的种类、范围、数量以及它们在业务活动中交流的情况,确定用户对数据库系统的使用要求和各种约束条件等,形成用户需求规约。
2、概念设计
内容:对用户要求描述的现实世界,通过对其中诸处的分类、聚集和概括,建立抽象的概念数据模型。这个概念模型应反映现实世界各部门的信息结构、信息流动情况、信息间的互相制约关系以及各部门对信息储存、查询和加工的要求等。
3、逻辑设计
内容:主要工作是将现实世界的概念数据模型设计成数据库的一种逻辑模式,即适应于某种特定数据库管理系统所支持的逻辑数据模式。与此同时,可能还需为各种数据处理应用领域产生相应的逻辑子模式。这一步设计的结果就是所谓“逻辑数据库”。
4、物理设计
内容:根据特定数据库管理系统所提供的多种存储结构和存取方法等依赖于具体计算机结构的各项物理设计措施,对具体的应用任务选定最合适的物理存储结构(包括文件类型、索引结构和数据的存放次序与位逻辑等)、存取方法和存取路径等。
5、验证设计
内容:收集数据并具体建立一个数据库,运行一些典型的应用任务来验证数据库设计的正确性和合理性。一般,一个大型数据库的设计过程往往需要经过多次循环反复。当设计的某步发现问题时,可能就需要返回到前面去进行修改。
6、运行与维护设计
内容:在数据库系统正式投入运行的过程中,必须不断地对其进行调整与修改。除了关系型数据库已有一套较完整的数据范式理论可用来部分地指导数据库设计之外,尚缺乏一套完善的数据库设计理论、方法和工具,以实现数据库设计的自动化或交互式的半自动化设计。
扩展资料:
重要性
1、有利于资源节约
对计算机软件数据库设计加以重视不仅可减少软件后期的维修,达到节约人力与物力的目的,同时还有利于软件功能的高效发挥。
2、有利于软件运行速度的提高
高水平的数据库设计可满足不同计算机软件系统对于运行速度的需求,而且还可充分发挥并实现系统功能。计算机软件性能提高后,系统发出的运行指令在为用户提供信息时也将更加快速有效,软件运行速度自然得以提高。
3、有利于软件故障的减少
加强数据库设计可有效减少软件故障的发生几率,推动计算机软件功能的实现。
参考资料来源:百度百科-数据库设计
数据库的开发对于后台编程程序员来说是必备能力之一了,而今天我们就一起来了解一下,关于数据库开发的设计规范都有哪些类型,昌平北大青鸟希望通过对本文的阅读,大家对于数据库开发有更多的了解。
一、数据库命令规范
所有数据库对象名称必须使用小写字母并用下划线分割
所有数据库对象名称禁止使用mysql保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来)
数据库对象的命名要能做到见名识意,并且后不要超过32个字符
临时库表必须以tmp_为前缀并以日期为后缀,备份表必须以bak_为前缀并以日期(时间戳)为后缀
所有存储相同数据的列名和列类型必须一致(一般作为关联列,如果查询时关联列类型不一致会自动进行数据类型隐式转换,会造成列上的索引失效,导致查询效率降低)
二、数据库基本设计规范
1、所有表必须使用Innodb存储引擎
没有特殊要求(即Innodb无法满足的功能如:列存储,存储空间数据等)的情况下,所有表必须使用Innodb存储引擎(mysql55之前默认使用Myisam,56以后默认的为Innodb)Innodb支持事务,支持行级锁,更好的恢复性,高并发下性能更好
2、数据库和表的字符集统一使用UTF8
兼容性更好,统一字符集可以避免由于字符集转换产生的乱码,不同的字符集进行比较前需要进行转换会造成索引失效
3、所有表和字段都需要添加注释
使用comment从句添加表和列的备注从一开始就进行数据字典的维护
4、尽量控制单表数据量的大小,建议控制在500万以内
500万并不是MySQL数据库的限制,过大会造成修改表结构,备份,恢复都会有很大的问题
可以用历史数据归档(应用于日志数据),分库分表(应用于业务数据)等手段来控制数据量大小
5、谨慎使用MySQL分区表
分区表在物理上表现为多个文件,在逻辑上表现为一个表谨慎选择分区键,跨分区查询效率可能更低建议采用物理分表的方式管理大数据
6、尽量做到冷热数据分离,减小表的宽度
MySQL限制每个表多存储4096列,并且每一行数据的大小不能超过65535字节减少磁盘IO,保证热数据的内存缓存命中率(表越宽,把表装载进内存缓冲池时所占用的内存也就越大,也会消耗更多的IO)更有效的利用缓存,避免读入无用的冷数据经常一起使用的列放到一个表中(避免更多的关联 *** 作)
本文教你如何设计大型Oracle数据库 希望对大家有所帮助
一 概论
超大型系统的特点为
处理的用户数一般都超过百万 有的还超过千万 数据库的数据量一般超过 TB;
系统必须提供实时响应功能 系统需不停机运行 要求系统有很高的可用性及可扩展性
为了能达到以上要求 除了需要性能优越的计算机和海量存储设备外 还需要先进的数据库结构设计和优化的应用系统
一般的超大型系统采用双机或多机集群系统 下面以数据库采用Oracle 并行服务器为例来谈谈超大型数据库设计方法
确定系统的ORACLE并行服务器应用划分策略
数据库物理结构的设计
系统硬盘的划分及分配
备份及恢复策略的考虑
二 Oracle并行服务器应用划分策略
Oracle并行服务器允许不同节点上的多个INSTANCE实例同时访问一个数据库 以提高系统的可用性 可扩展性及性能 Oracle并行服务器中的每个INSTANCE实例都可将共享数据库中的表或索引的数据块读入本地的缓冲区中 这就意味着一个数据块可存在于多个INSTANCE实例的SGA区中 那么保持这些缓冲区的数据的一致性就很重要 Oracle使用 PCM( Parallel Cache Management)锁维护缓冲区的一致性 Oracle同时通过I DLM(集成的分布式锁管理器)实现PCM 锁 并通过专门的LCK进程实现INSTANCE实例间的数据一致
考虑这种情况 INSTANCE 对BLOCK X块修改 这时INSTANCE 对BLOCK X块也需要修改 Oracle并行服务器利用PCM锁机制 使BLOCK X从INSTANCE 的SGA区写入数据库数据文件中 又从数据文件中把BLOCK X块读入INSTANCE 的SGA区中 发生这种情况即为一个PING PING使原来 个MEMORY IO可以完成的工作变成 个DISK IO和 个 MEMORY IO才能够完成 如果系统中有过多的PING 将大大降低系统的性能
Oracle并行服务器中的每个PCM锁可管理多个数据块 PCM锁管理的数据块的个数与分配给一个数据文件的PCM锁的个数及该数据文件的大小有关 当INSTANCE 和INSTANCE 要 *** 作不同的BLOCK 如果这些BLOCK 是由同一个PCM锁管理的 仍然会发生PING 这些PING称为FALSE PING 当多个INSTANCE访问相同的BLOCK而产生的PING是TRUE PING
合理的应用划分使不同的应用访问不同的数据 可避免或减少TRUE PING;通过给FALSE PING较多的数据文件分配更多的PCM锁可减少 FALSE PING的次数 增加PCM锁不能减少TRUE PING
所以 Oracle并行服务器设计的目的是使系统交易处理合理的分布在INSTANCE实例间 以最小化PING 同时合理的分配PCM锁 减少FALSE PING 设计的关键是找出可能产生的冲突 从而决定应用划分的策略 应用划分有如下四种方法
根据功能模块划分 不同的节点运行不同的应用
根据用户划分 不同类型的用户运行在不同的节点上
根据数据划分 不同的节点访问不同的数据或索引
根据时间划分 不同的应用在不同的时间段运行
应用划分的两个重要原则是使PING最小化及使各节点的负载大致均衡
三 数据库物理结构的设计
数据库物理结构设计包括确定表及索引的物理存储参数 确定及分配数据库表空间 确定初始的回滚段 临时表空间 redo log files等 并确定主要的初始化参数 物理设计的目的是提高系统的性能 整个物理设计的参数可以根据实际运行情况作调整
表及索引数据量估算及物理存储参数的设置
lishixinzhi/Article/program/Oracle/201311/18944
其语义假设如下: (1)任何两个顾客的收货地址都不相; (2)每一订单都有一个唯一的订单号码; (3)每个订单的订单细则在该订单里有一个唯一的编号。 函数依赖如下: CUSTNO→BAL,CUSTNO→CREDLIM,CUSTNO→DISCOUNT ADDRESS→CUSTNO, ORDNO→DATE (ORDNO,LINENO)→QTYORD,(ORDNO,LINENO)→QTYOUT (ORDNO,LINENO)→(ITEMNO,PLANTNO) (ITEMNO,PLANTNO)→QTYOH (ITEMNO,PLANTNO)→DANGER ITEMNO→DESCN 相应的BCNF如下: 顾客:CUST(CUSTNO,BAL,CREDLIM,DISCOUNT) 发货:SHOPTO(ADDRESS,CUSTNO) 订货单:ORDHEAD(ORDNO,ADDRESS,DATE) 订货细则:ORDLINE(ORDNO,LINENO,ITEMNO,QTYORD,QTYOUT) 货物:ITEM(ITEMNO,DESCN) 供货:IP(ITEMNO,PLANTNO,QTYOH,DANGER)
步骤如下:
1、需求分析阶段
进行数据库设计首先必须准确了解与分析用户需求(包括数据与处理)。需求分析是整个设计过程的基础,是最困难和最耗费时间的一步。作为“地基”的需求分析是否做得充分与准确,决定了在其上构建数据库“大厦”的速度与质量。需求分析做的不好,可能会导致整个数据库设计返工重做。
2、概念结构设计阶段
概念结构设计阶段是整个数据库设计的关键,它通过对用户需求进行综合、归纳与抽象,形成一个独立于具体数据库管理系统的概念模型。
3、逻辑结构设计阶段
逻辑结构设计是将概念结构转换为某个数据库管理系统所支持的数据模型,并对其进行优化。
3、物理设计阶段
物理结构设计师为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方式)。
5、数据库实施阶段
在数据库实施阶段,设计人员运用数据库管理系统提供数据库语言及其宿主语言,根据逻辑设计和物理设计的结果建立数据库,编写与调试应用程序,组织数据入库,并进行测试运行。
6、数据库运行和维护阶段
数据库应用系统经过试运行后即可投入正式运行,在数据库系统运行过程中必须不断对其进行评估、调整与修改。
这个三个表就应该够了吧,一个是商品大类表,一个是品牌表,另外是商品详细信息表
商品类别表:
ClassID
ClassName
ParentID //这个商品类归属的上个大类,也就是满足你的多级分类要求
举个例子 假设说你的鞋子分类id是1,那下属的小类举例说女凉鞋,她的ParentID就是1,明白?
品牌表:
BrandID
BrandName
BrandDescription
商品详细信息表:
GoodId
ClassID
BrandID
GoodName
GoodDescription
GoodURl
还有其他你想加的属性
以上就是关于数据库的N-+S图怎么设计全部的内容,包括:数据库的N-+S图怎么设计、数据库设计主要包括哪几部分,分别包括哪些内容、昌平北大青鸟分享数据库设计需要遵守的设计规范等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)