首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

数据设计原则

引言 本文小结了数据设计原则数据设计对于数据库的可维护性、可扩展性至关重要,某些原则必须严格遵守; 数据设计范式 第一范式:属性具有原子性,不可再分解,即不能表中有表; 第二范式:唯一性约束,每条记录有唯一标示...,所有的非主键字段均需依赖于主键字段; 第三范式:冗余性约束,非主键字段间不能相互依赖; 数据设计原则 完整性: not null声明禁止插入空值; check子句限制属性域; 去冗余: 避免冗余属性...,冗余属性会带来数据不一致性; 学生选课系统中,老师可以开课、学生可以选课,数据设计中,课程可以由课程编号和课程名称等确定; 如果现在维护两个表,一个表A存储课程信息(课程编号、名称、简介、学分、院系等...; 如果性能成为主要矛盾,则上述原则也不绝对; 数据库命名原则 数据库的命名会直接影响到上层应用的名称,所以要和业务部门仔细讨论、慎重确定; 每个属性名在数据库中只有唯一的含义,number这个属性名可能表示电话号码或是房间号...; 大型数据设计 负载均衡; 读写分离; 分布式存储; 参考这篇文章(https://www.cnblogs.com/ejiyuan/archive/2010/10/29/1796292.html);

67160

设计原则——开闭原则

什么是开闭原则? 在设计一个模块的时候,应当使这个模块可以在不被修改的前提下被扩展,即应当可以在不必修改源代码的情况下改变这个模块的行为。 如何运用开闭原则?...开闭原则解决问题的关键在于抽象化,把系统所有可能的行为抽象成一个抽象底层,这个抽象底层规定出所有的具体实现必须提供的方法的特征,给系统定义出一个一劳永逸,不再修改的抽象设计,此设计允许有无穷尽的行为在实现层被实现...在JAVA中可以定义一个或多个抽象Java类或Java接口,规定出所有的具体类必须提供的方法的特征作为系统设计的抽象层。...作为系统设计的抽象层,要预见所有可能的扩展,因此在任何扩展情况下系统抽象底层不需要修改。同时,由于抽象层导出一个或多个新的具体类可以改变系统的行为,因此系统的设计对扩展是开放的。...遵守开闭原则进行如下改变 打折类: public class OffNovelBook extends NovelBook { public OffNovelBook(String name

2300
您找到你想要的搜索结果了吗?
是的
没有找到

设计原则:面向对象设计原则详解

而在面向对象的设计里面,可维护性复用都是以面向对象设计原则为基础的,这些设计原则首先都是复用的原则。遵循这些设计原则可以有效地提高系统的复用性,同时提高系统的可维护性。...面向对象设计原则设计模式也是对系统进行合理重构的指导方针。...例子: 最简单例子是:一个数据结构职责类和算法行为都放在一个类User。现使用单一职责原则对User类进行重构: 一个软件模块都应该只对某一类行为者负责, 我们应该把数据结构和行为分开。...充血模型是指对象里即有数据和状态,也有行为,行为负责维持本身的数据和状态,具有内聚性,最符合面向对象的设计,满足单一职责原则。这也是我们是为常见的对象设计方式。...2、原则分析: 1)如果说开闭原则是面向对象设计的目标,依赖倒转原则是到达面向设计"开闭"原则的手段..如果要达到最好的"开闭"原则,就要尽量的遵守依赖倒转原则.

1.8K30

设计原则

类应该对扩展开发,对修改关闭 依赖倒置原则 要依赖抽象,不要依赖具体类 依赖倒置,倒置在哪? 在依赖倒置原则中的倒置指的是和一般的OO设计的思考方式完全相反。...如果说设计一个比萨店,我们应该从上往下思考,先要有一个比萨店,然后比萨点根据要求生产出具体类型的比萨。...(具体方式可以是简单工厂,也可以是工厂方法模式) 本来的设计方式: ? 依赖倒置的设计方式: ? 最少知识原则 不要让太多类耦合在一起,免得修改系统的一部分,会影响到另外一部分。 ? ?...内聚 当来一个类或者一个模块被设计成只支持一组相关功能的时候,我们说它具有高内聚。反之,当被设计成支持一组不相关的功能时,我们说它具有低内聚。...里氏替换原则为继承定义的规范: 子类必须完全实现父类的方法 子类可以有自己的新方法、新属性

50640

设计原则之开闭原则

所谓对扩展开放,对修改关闭,其实是设计模式里面所重点提倡的,后续所有涉及模式的介绍其实都是为了程序能够更好的扩展,提倡设计模式的本质就是为了减少 增加一点功能而修改系统的主要逻辑!...* @return 格式化后的数据 */ public String stringFormat(String data) { if (data !...StringFormatUtil.stringFormat(MSG)); } } 程序必须首先让人类理解,然后顺便让机器能执行^_^xxxx Process finished with exit code 0 总结 通过上述代码可以知道,开闭原则是是为了避免过多的修改原有的代码逻辑...,用扩展代替修改而衍生的一个原则,不可否认,他也是所有的设计模式都想表达的一个结果,高扩展性。...开闭原则也并不是免费的。有些情况下,代码的扩展性会跟可读性相冲突。比如,我们之前举的 StringFormat格式化的例子。

61830

设计原则

——《敏捷软件开发原则、模式与实践》 好的代码永远是需要设计的。一名高级程序员,更应该有设计师的潜质,不只是关注怎么用代码实现业务,更关注的是代码的设计。...JavaScript用得上设计原则有单一职责原则、里氏替换原则、依赖倒置原则、接口隔离原则、合成复用原则和最少知识原则等。本文将选取三个常用的阐述之。...需要明确的是:设计原则只是一种指导,没有哪条原则是在实际开发中必须遵守的。但善用原则,可以帮助更好地设计代码。 1 单一职责原则(srp) 概述 定义:就一个类而言,应该仅有一个引起它变化的原因。...封装与最少知识的关系 封装在很大程度上表达的是数据的隐藏。一个模块或者对象可以将内部的数据或者实现细节隐藏起来,只暴露必要的接口API供外界访问。...在面向对象的程序设计中,开放封闭原则(OCP)是最重要的一条原则。很多时候,一个程序具有良好的设计,往往说明它是符合开放封闭原则的。

52720

设计原则

这种耦合会导致脆弱的设计,当发生变化时,设计会遭受到意想不到的破坏。...为什么要遵循此原则? 我们要遵循OCP原则,OCP背后的机制是抽象和多态,支持抽象和多态的关键机制是继承(比如C#是这样),那么是什么设计规则支配着这种继承用法?最佳的继承层次特征是什么?...该原则是框架设计的核心。 为什么要遵守此原则? 如果高层模块依赖于低层模块,那么对低层模块的改动会直接影响到高层模块,从而迫使他们一次做出改动。 违反原则的情形 高低层组件通过具体类来实现交互。...三、控制反转(IoC) 控制反转是基于面向对象的原则,提倡松耦合理念的设计原则,允许独立开发应用程序的各个组件。 实现方式 实现方式有两种:依赖注入,服务定位。...可以将SQL记录到本地文本文件中,也可以将SQL存储数据库中,实现如下: public class CommandInterceptor : IDbCommandInterceptor {

72271

设计原则(1)| 开闭原则

这些操作都是通过「修改」来实现新功能的,不符合「开闭原则」。 如果我们要遵循「开闭原则」,必须对修改关闭,对扩展开放。...其次,「开闭原则」的定义是软件实体(模块、类、方法等)应该对扩展开放,对修改关闭。...所有的设计原则都只有一个最终归宿——不破坏原有代码的正常运行,方便扩展。...但是想识别出所有可能的扩展点既不可能也没必要,最合理的做法是对一些比较确定的、短期内可能会发生的需求进行扩展设计。...还是那句话,设计原则设计模式不是金科玉律,只要适合当前需求,并具备一定弹性的设计就是好设计。要平衡代码扩展性和可读性,切勿滥用设计原则设计模式,牺牲代码的可读性。

56220

设计模式 -- 设计原则

终极目的 稳定、灵活、健壮 实现手段 低耦合、高内聚 设计原则 [设计原则.PNG] 单一职责 & 接口隔离 单一职责 侧重于职责 接口隔离 侧重于业务逻辑 开闭原则 Define: Software...上面的定义描述的很虚,不像另外五条原则一样,有比较实际的描述。...但是却是比较基础的原则之一,他的影子在其他原则的实践中也总是可以看到,笔者的理解,他就是一个精神领袖,是最基本的原则,也是所有原则的集大成的体现。...更多 实现拥抱变化的方法远不止于上面所述的6种原则,但是这这6条原则可以应对大部分情况;更重要的是,脱离业务的设计都是耍流氓,严格死扣某一条原则,是一条不归路 书籍推荐 《设计模式之禅》

53850

设计模式——设计原则

设计原则 程序开发不仅要知道设计模式还要知道设计原则,尽最大能力按照原则设计开发,对于代码review或者修改后期项目以及项目交接都会很方便。...三、依赖倒置原则 高层模块不应该依赖底层模块,两者都应该依赖其抽象,抽象不应该依赖细节,细节应该依赖抽象。...四、接口隔离原则 客户端不应依赖它不需要的接口,对接口进行细化;类建的依赖关系应该建立在最小的接口上。建立单一接口,不要建立臃肿庞大的接口。而且要满足单一职责原则。...六、开闭原则 一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。一个软件实体应该通过扩展来实现变化,而不是通过修改已有的代码来实现变化。开闭原则可以提高复用性,提高维护性。...六大设计原则主要是Java面向对象编程设计原则,降低项目耦合,分清职责。方便开发和继续维护。 ----

57860

数据分析图表的设计原则

,我们要做的是通过图表的形式,把这些数据进行简化,进行视觉化的呈现,今天我们来讲讲如何在EXCEL中进行图表设计原则。...图表如果去分的话会有两种类型的图表,一种是概念类的,这种图表是通过一些SMART的图,或者一些美化过的经过设计的图,来进行视觉化的数据的展示,这种图相对于职场的数据分析来说,做图比较有难度,因为会涉及到一些专业的设计的软件...另外一种图表是资料图,这种图更多是在EXCEL的基础上,根据数据进行商业图表的设计,比如我们常规使用的 柱状图,折线图,面积图,条形图等,这些图相对来说在设计制作上比较的简单,更多是要求使用者有这种数据分析的思维...1: 简化去干扰 在我们进行数据分析图表设计的时候,图表有很多干扰的元素,比如网格,背景,颜色,数字等,我们需要遵循简化的原则,去除一切干扰我们看图表的元素,应该站在见图者的角度来进行图表的简化...原则 2:强调特别的区块 每个图表都有其自己想要表达的主题,我们并不是为了设计图表而去设计图表,所以在每个图表上,我们需要把我们想要强调的主题来进行突出,当然方法很多,不管是变换颜色,字体加粗放大,还是通过图像等

95420

数据库MySQL-设计原则

二、MYSQL数据设计原则 1、核心原则 不在数据库做运算; cpu计算务必移至业务层; 控制列数量(字段少而精,字段数建议在20以内); 平衡范式与冗余(效率优先;往往牺牲范式) 拒绝3B(拒绝大sql...语句:big sql、拒绝大事务:big transaction、拒绝大批量:big batch); 2、字段类原则 用好数值类型(用合适的字段类型节约空间); 字符转化为数字(能转化的最好转化,同样节约空间...提高查询性能); 避免使用NULL字段(NULL字段很难查询优化、NULL字段的索引需要额外空间、NULL字段的复合索引无效); 少用text类型(尽量使用varchar代替text字段); 3、索引类原则...; 不在索引做列运算; innodb主键推荐使用自增列(主键建立聚簇索引,主键不应该被修改,字符串不应该做主键)(理解Innodb的索引保存结构就知道了); 不用外键(由程序保证约束); 4、sql类原则

1.7K20

数据产品权限管理设计原则(一)

,那么,作为数据产品经理,如何设计数据产品的权限控制模块,来保证数据安全呢。...RBAC原则 权限设计最常用的是RBAC原则,即:Role-Based Access Control),基于角色的访问控制。...结合数据产品PGC和UGC内容对权限管控的需求,以及RBAC权限设计原则的优缺点,在RBAC原则下,融入UGC内容的权限管理,就可以解决问题了。...具体权限逻辑如下: RBAC原则为基础: 基于RBAC设计功能权限,以精准营销平台为例,设定:普通用户、部门管理员、QA测试人员、数据开发、标签管理员、系统管理员等几个角色: 普通用户:可以使用标签进行人群圈选和场景创建...本文主要介绍了权限管理相对通用的原则,每个产品有自身的差异化特点,具体情况大家可以结合实际情况进行设计

1.5K10

设计模式原则:开放封闭原则

开放封闭原则 开放封闭原则表示一个软件实体(如类、模块、函数等)应该对扩展开放,对修改封闭。也就是说,一个软件实体应该在不修改原有代码的前提下,可以扩展新的功能。...开放封闭原则设计模式的核心原则,它体现了软件的灵活性和稳定性。如果一个软件能够满足开放封闭原则,那么它就具有以下两个优点: 能够扩展已有的功能,满足新的需求,具有很强的适应性和灵活性。...{ throw new IllegalArgumentException("Invalid expression"); } } } 这个类违反了开放封闭原则...为了遵循开放封闭原则,我们应该将 Calculator 类设计成一个抽象类,并定义一个抽象方法 calculate()。

13740

Java设计原则—开闭原则(转)

开闭原则(Open Closed Principle)是Java世界里最基础的设计原则,它指导我们如何建立一个稳定的、灵活的系统。 定义: 一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。...软件实体包括以下几个部分: 项目或软件产品中按照一定的逻辑规则划分的模块 抽象和类 方法 开闭原则是为软件实体的未来事物而制定的对现行开发设计进行约束的一个原则。...变化的类型: 逻辑变化 子模块变化 可见试图变化 一个项目的基本路径应该是这样的:项目开发、重构、测试、投产、运维,其中的重构可以对原有的设计和代码进行修改,运维尽量减少对原有代码修改,保持历史代码的纯洁性...开闭原则可以提高复用性 在面向对象的设计中,所有的逻辑都是从原子逻辑组合而来的,而不是在一个类中独立实现一个业务逻辑。只有这样代码才可以复用,粒度越小,被复用的可能性就越大。...元数据(metadata)控制模块行为 元数据就是用来描述环境和数据数据,通俗地说就是配置参数,参数可以从文件中获得,也可以从数据库中获得。

18520

数据产品PRD设计经典四原则

因此,多数数据产品是不配备UI、UE等设计师资源的,作为追求极致、追求美感的数据产品经理人,掌握一些基本的设计原则,产品PRD的美感上升了,产品上线效果也会更好一些。...毕竟数据产品的美观度不会超过产品经理的美感。 直接说提升个人的审美能力太过于抽象,难以执行落地,掌握一些设计理论则可以实际产品设计过程中,提供具体的方法指引。...数据产品设计过程,要重点关注一致性原则,比如相同的组件的文案描述,比如对于操作弹窗,前面页面叫确定,后面页面叫保存,新的概念引出增加额外的理解成本。...数据产品设计中,针对用户交互说明的异常提醒、必填字段与非必填字段的差异,不同操作按钮之间的对比等等,都可以利用对比原则来进行凸显差异。...但如果能够融会贯通,在数据产品设计中时刻遵守这些原则,量变引起质变,从而带来产品PRD设计美感的整体提升,不仅如此,工作总结汇报、项目复盘PPT也可以应用起来。

57710

设计模式原则:依赖倒置原则

依赖倒置原则 依赖倒置原则表示高层模块不应该依赖低层模块,两者都应该依赖其抽象。抽象不应该依赖细节,细节应该依赖抽象。也就是说,要针对接口编程,而不是针对实现编程。...依赖倒置原则是面向对象设计的重要原则之一,它体现了面向对象的思想和封装的特性。如果一个软件能够遵循依赖倒置原则,那么它就具有以下两个优点: 降低了类之间的耦合性,提高了系统的稳定性。...keyboard.input(); mouse.click(); System.out.println("电脑工作"); } } 这个类违反了依赖倒置原则...这样的设计有以下几个缺点: 类之间的耦合度高,如果 Keyboard 类或者 Mouse 类发生变化,就需要修改 Computer 类的代码。...为了遵循依赖倒置原则,我们应该将 Keyboard 类和 Mouse 类设计成实现一个共同的接口 Component。

13320

java设计原则--里氏替换原则

缺点三:增强了耦合性,当父类的常量、变量和方法被修改时需要考虑子类的修改 里式替换作用 Java的单继承机制从总体上看是利大于弊,那么,如何让利的优势发挥最大,同时减少弊的带来的麻烦呢,于是就有了里式替换原则...,里氏替换原则为良好的继承定义了一个规范 我们在做系统设计时,经常会定义一个接口或抽象类,然后编码实现,调用类则直接传入接口或抽象类,其实这里已经使用了里氏替换原则 举一个CS的案例: 枪的主要职责是射击...注意 在类中调用其他类时务必要使用父类或接口,如果不能使 用父类或接口,则说明类的设计已经违背了LSP原则 本文内容参考设计模式之禅,仅用于个人学习,如有不妥请联系删除

82320

设计原则之开闭原则(OCP)

如何应对这些变化是开闭原则要解决的问题。开闭原则允许软件实体在不更改其代码的情况下变更其行为(变更包括改变和增加)。...定义 开闭原则(Open Close Principle) 是面向对象设计中重要的原则,它要求软件实体对扩展开放,对修改封闭,软件实体包含函数、类、模块甚至是可执行程序。...插件与中间件 插件与中间件可以说必须遵守开闭原则。软件在发布后使用人员是无法修改源代码的,因此源代码设计人员需将能力开放给使用人员,就必须依赖开闭原则。...有关这方面,有人提出了 SPI 的概念,可参加以前写的API 与 SPI 与设计模式之间的关系 设计原则设计模式的指导,设计模式是设计原则的具象。比较虚的原则需要使用比较实的模式来说明。...很多文章使用策略模式来讲解开闭原则,导致很多人认为开闭原则就是策略模式,实际上策略模式是开闭原则的一种实现而已。

1.1K30
领券