开发中遇到的数据库相关问题

  最近对于数据库的增删改查做的多了突然发现个问题就是:数据库表结构如果设计的不好,

那么到开发中会产生很多问题。(本文还未总结完,语言些许模糊,如有异议,欢迎指正)

问题如下:
(1)1个表中表结构不全问题:冗余,该有的没有、不该有的也有;当然了,这不能完全算是设计问题,因为往往需求在不停的变化不停的发现问题的,可是到了需求分析较成熟阶段这就不应该了,如果出现,那只能说明你设计的不严谨或你的水平有限。这里不聊需求分析了,因为其内容不是一两句话就能说完的。
(2)2个及以上表关联时,表与表之间的耦合性高,为了适应复杂的业务关系增加了表中字段的语义复杂度及与其他字段的关联。打个比喻,如果现实中让你一个人兼职太多会造成麻烦。

往往会像蜘蛛知网一样,最后你自己都理不清这个字段这个表设计的初衷是啥了。

学好数据库范式理论还是非常有必要的。

本文相关的例子稍后会对应列举出。

时间: 2024-10-09 10:25:11

开发中遇到的数据库相关问题的相关文章

理解嵌入式开发中的一些硬件相关的概念

做嵌入式系统开发,经常要接触硬件.做嵌入式开发对数字电路和模拟电路要有一定的了解.这样才能深入的研究下去.下面我们简单的介绍嵌入式开发中的一些硬件相关的概念. 电平(Level) 在数字电路中,分为高电平和低电平,分别用1和0表示.一个数字电路的管脚,总是存在一个电平的,要么高要么低,或者说要么1要到0(其实,还有另一种状态,后面会提到). 总线(Bus) 在嵌入式系统中一定会有一块处理器芯片,此外,还有其它的芯片作为外部设备(后面简称外设),这些芯片与处理器协作实现产品的功能.复杂的产品往往是

在安卓开发中使用SQLite数据库操作实例

前段时间写了个安卓平台下SQLite数据库操作的实例 ,一直没得时间总结 ,今天把它弄出来了. 在Android 运行时环境包含了完整的 SQLite. 首先介绍一下SQLite这个数据库: SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了.它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tc

Sqlserver 实际开发中常见的数据库操作增删改查----增

注意我说的常见查询,可不是简单到一个表得增删改查,做过实际开发得人都知道,在实际开发中,真正牵扯到一个表得增删改查只能说占很小得一部分,大多都是好几个表的关联操作的. 下面我就说一下我在实际开发中经常用到得一些增删改查方式.(首先我还要说一下,就是我虽然能写,但是我不知道这种查询方式叫什么类型查询,毕竟数据库这块以前都没干过,做.net开发也就一年左右,大家看我写的博客也会知道,以前搞前端U3D游戏开发的,不接触数据库,取数据调后台接口就行了,其他不用管.所以没做.net前,我也就是会大学时候学

Sqlserver 实际开发中常见的数据库操作增删改查----删

--我们就以院系,班级,学生来举例. create TABLE [dbo].YuanXi ( Id int IDENTITY(1,1) NOT NULL,--学校id 自增量 YuanXiName varchar(50) null, --院系名字 ) create TABLE [dbo].Class ( Id int IDENTITY(1,1) NOT NULL,--班级id 自增量 YuanXiID int null,--院系id ClassName varchar(50) null --班级

Sqlserver 实际开发中常见的数据库操作增删改查----改

--我们就以院系,班级,学生来举例. create TABLE [dbo].YuanXi ( Id int IDENTITY(1,1) NOT NULL,--学校id 自增量 YuanXiName varchar(50) null, --院系名字 ) create TABLE [dbo].Class ( Id int IDENTITY(1,1) NOT NULL,--班级id 自增量 YuanXiID int null,--院系id ClassName varchar(50) null --班级

iOS-Runtime在开发中的使用及相关面试题

OC语言中最为强大的莫过于OC的运行时机制-Runtime,但因其比较接近底层,一旦使用Runtime出现bug,将很难调试,所以Runtime在开发中能不用就不用.下面我将介绍一些Runtime在开发中的使用,已经面试可能遇见的面试题. 1.OC语法和Runtime语法的区别 OC语法和Runtime语法的区别,换而言之就是OC中我们写的语句,最终被转换成Runtime中什么样语句.由于Xcode6之后,苹果不建议使用Runtime,也就是现在在编译的时候,runtime的函数不会提示,需要去

cocos2d-x 2.1 Win32+Android开发中的sqlite数据库加密技术探讨

注意:本博客转移自本人约一年前的ITPUB博客文章,为的是便于学员参考之用. 很显然,cocos2d-x编程中只了解基本的sqlite数据库操作技术只是一个开头,真正把此数据库数据应用于实际中不使用一定的加密及解密技术几乎是不行的. 这个问题尽早会来到我面前,这不?现在就来了.一开始,自然想使用最省工的了:但是,这样的好事并不多,极少极少...... 于是,我先搜罗了一些现成的文章拿来一阅. 1,Sqlite数据库加密解密 SRC: http://blog.sina.com.cn/s/blog_

IT蓝豹强烈推荐:符合1-2年工作经验,开发中的难点及相关优化:

IT蓝豹 ------------------>sqlite数据库版本升级 1.sqlite升级步骤: 1.自己写一个类继承自SqliteOpenHelper 2.会实现SqliteOpenHelper的两个方法 onCreate与onUpgrade,google文档对两个回调方法的解释是创建数据库的时候调用与更新数据库的版本的时候调用 3.Sqlite数据库主要是用来缓存应用的数据,而应用却是一直在更新版本,相应的数据的表的字段也会一直增加会改变或减少 4.这个时候就需要控制数据库的版本,因为

iOS 开发中的坑与相关技巧

1. 界面切换部分: 当一个界面中不包含NavigationBar的时候但是要其跳转到另一个包含NavigationBar的界面的情况下,要进行NavigationBar的展示和隐藏的情况下设置不同的界面的逻辑,此时设置的不当的话会造成侧滑切换界面的间隙会造成NavigationBar的标题栏的短暂隐藏,所以在控制其隐藏的时候需要注意一下,可以在需要隐藏的界面做以下设置: - (void)viewWillAppear:(BOOL)animated { [self.navigationContro