到底该怎么弄,有木有人能说下,有木有,有木有

问题描述

一共20来张表,其实有7个表是一层套一层的关系。比如,A(ID,NAME),B(ID,NAME,A.ID,A.NAME),C(ID,NAME,B.ID,B.NAME,A.ID,A.NAME)以前我B,C表里,就只放了其它表的ID,后来发现页面显示的时候,要去循环,很麻烦。于是加了NAME但现在比如说,A更新了NAME,但是B,C里的就没有更新。我想了以下几种办法:1.在更新A的NAME的时候,同时更新B,C里的相应A.NAME2.B,C显示的时候,还是去循环,通过ID显示。3.据说该用视图,但是不是很明白。望高人指点

解决方案

解决方案二:
三种方法都可以,最后一种方法和第二种方法是一样的,只不过视图是提前准备好的SQL查询而已。如果读频繁,写的机会少,用触发器,第一种方案是比较好的。
解决方案三:
BC里面就不需要加Name了,这样太冗余了。你显示BC的时候为什么要循环啊,同时关联表查出来不久结了。
解决方案四:
这表咋这样设计撒?不解。。。
解决方案五:
只能用手工维护完整性了严重违反了第三范式,咋这么设计?
解决方案六:
感觉你还是用Hibernate比较好,直接1对1或者1对多级联就简单多了。
解决方案七:
有必要再中间表加一个name吗?这不是重复了吗?在中间表只要存在映射id查询的时候关联,你再觉得麻烦也没办法,不然你的数据库会无比臃肿
解决方案八:
就放个关联的id就行了想少写代码可以这样把表名和id以及name写的有规律些比如表tablea:tablea_id,tableb_name表tableb:tableb_id,tableb_name...然后写个方法,传入表名,自动返回sql语句或者查询结果
解决方案九:
首先的设计思路就有问题,你这样设计很多冗余数据你既然设置了为什么还要加name啦你直接表关联查询不就行了啊还有就是你要修改的时候只需修改一主表就行了你这样的话不是每个表都要改典型的冗余数据
解决方案十:
其实你的B表里完全可以没有A表中的NAME字段,C表中可以没有B表中的NAME字段及A表中的ID和NAME字段,用级联就可以了,并且,你的数据库设计严重违反了数据库的三范式;数据库的三范式:第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项;第二范式(2NF)要求数据库表中的每个实例或行必须可以被惟一地区分;第三范式(3NF)要求一个数据库表中不包含已在其它表中已包含的非主关键字信息.
解决方案十一:
引用2楼lh_fengyuzhe的回复:

BC里面就不需要加Name了,这样太冗余了。你显示BC的时候为什么要循环啊,同时关联表查出来不久结了。

同意!++
解决方案十二:
最开始想错了,该到sql那去操作,我都是在页面去操作的。用<c:标签
解决方案十三:
其实你的B表里完全可以没有A表中的NAME字段,C表中可以没有B表中的NAME字段及A表中的ID和NAME字段,用级联就可以了,并且,你的数据库设计严重违反了数据库的三范式;数据库的三范式:第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项;第二范式(2NF)要求数据库表中的每个实例或行必须可以被惟一地区分;第三范式(3NF)要求一个数据库表中不包含已在其它表中已包含的非主关键字信息.
解决方案十四:
数据库设计的很蛋疼!
解决方案十五:
引用12楼xianaofei的回复:

其实你的B表里完全可以没有A表中的NAME字段,C表中可以没有B表中的NAME字段及A表中的ID和NAME字段,用级联就可以了,并且,你的数据库设计严重违反了数据库的三范式;数据库的三范式:第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项;第二范式(2NF)要求数据库表中的每个实例或行必须可以被惟一地区分;第三范式(3NF)要求一个数据库表中不包含已在其它表中已……

这数据设计的真的很蛋疼啊。
解决方案:
用的ibatis,如果是直接用id,实体没相应的属性,怎么好赋值呢
解决方案:
用级联更新。
解决方案:
放在事务处理不行?
解决方案:
用的ibatis镶套层处理
解决方案:
这是谁设计的表?为什么会这这么严重的冗余?如果A,B之间存在包含关系,B表包含A表的主键字段即可,为什么会把A表的所有字段都包含在B表中,这样A表还有什么存在的意义呢?数据建模层都没做好,应用层写程序当然更乱了,唉
解决方案:
哎,求师傅
解决方案:
引用9楼dragonsky_w的回复:

其实你的B表里完全可以没有A表中的NAME字段,C表中可以没有B表中的NAME字段及A表中的ID和NAME字段,用级联就可以了,并且,你的数据库设计严重违反了数据库的三范式;数据库的三范式:第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项;第二范式(2NF)要求数据库表中的每个实例或行必须可以被惟一地区分;第三范式(3NF)要求一个数据库表中不包含已在其它表中已包……

+1严格遵照三大范式。。。
解决方案:
解决:1、使用触发器,当A表有更新时同时更新其他的表,保持一致性2、代码层手动加吧:当A更新时同时手动更新其他表3、重新设计吧,这种原因一般都是设计阶段的问题,这种设计太太太蛋疼了有木有!!!!不仅是写的时候会很蛋疼,将来维护起来会更蛋疼的有木有!!
解决方案:
也不要一味否定冗余,数据量大的时候,有时候冗余一下也是有必要的
解决方案:
呵呵后面的表像是包含了前面的表那最后不就只需要一个表了。。
解决方案:
修改的话还是触发器吧,查的话,如里多的话,冗余或视图都可以
解决方案:
触发器级联修改,级联删除
解决方案:
实际上是这样的,有七八个表都是这种关系。A(ID,NAME,XX,XX,XX),B(ID,NAME,A.ID,A.NAME,XX,XX,XXX,XXX),C(ID,NAME,B.ID,B.NAME,A.ID,A.NAME,XXX,XXX,XX,XXX),D(ID,NAME,C.ID,C.NAME,B.ID,B.NAME,A.ID,A.NAME,XXX,XXX,XX,XXX)加了这个可以方便查询,不然就有七表联合查询。就是更新的时候,会有问题。呃
解决方案:
触发器级联修改,级联删除

时间: 2024-10-28 05:00:34

到底该怎么弄,有木有人能说下,有木有,有木有的相关文章

mfc-MFC程序到底该怎么弄才能和以下第一张图片一样,可以没有头文件、源文件这些吗

问题描述 MFC程序到底该怎么弄才能和以下第一张图片一样,可以没有头文件.源文件这些吗 请问大家这种程序怎么建立的为什么我建立的MFC程序是这样的 解决方案 直接添加源代码,删除目录哦 解决方案二: 上面有个按钮,是显示全部文件,点完就是这个样子 解决方案三: 在"解决方案资源管理器"中,删除目录(当然删除之前最好先备份文件),将文件直接增加到工程中即可. 这样的例子有很多,如 WinCE 下的 Silverlight 工程,微软给的模板就是这样的. 解决方案四: 那些文件都是能直接删

引用的这些angularjs分别有什么用有木有大神指导下

问题描述 引用的这些angularjs分别有什么用有木有大神指导下 解决方案 这些一般都是对应不同的模块,引入不同的js文件如: 1.动画 2.布局 3.文件上传下载

谁知道百度语音那种音频播放器怎么弄的么,可以给小弟下源码么

问题描述 谁知道百度语音那种音频播放器怎么弄的么,可以给小弟下源码么 就是那种像扩音器一样的,就是那种像扩音器一样的就是那种像扩音器一样的就是那种像扩音器一样的就是那种像扩音器一样的就是那种像扩音器一样的 解决方案 http://download.csdn.net/download/mishi66/2505963

DateTime.Now.Ticks到底精准吗?熟悉的朋友进来帮下忙啊

问题描述 staticvoidMain(){StopwatchstopWatch=newStopwatch();stopWatch.Start();longc=stopWatch.ElapsedMilliseconds;Thread.Sleep(100);longd=stopWatch.ElapsedMilliseconds;Console.WriteLine(d-c);longi=DateTime.Now.Ticks;Thread.Sleep(100);i-=DateTime.Now.Tick

有人能指导下-大数据压力测试去测试软件响应速度

问题描述 大数据压力测试去测试软件响应速度 怎么样去开发一个数据生成器,并在大数据背景下测试软件的响应速度...这个该怎么做? 解决方案 国内有AutoRunner和TestCenter,这两个是免费的. 解决方案二: 开发一个数据生成器? 不是很理解, 而且你场景描述太不清楚了,你是要通过专业的测试软件进行测试还是只是生成数据调用程序接口? 生成数据可以程序代码生成 或者 数据库的可以用存储过程创建, excel也可以啊 解决方案三: 根据你的程序来判断,产生一些尽可能和真实数据类似的随机伪数

在connect木关闭的情况下 重复利用resultset之前 是否需要先关闭 再赋值......

问题描述 还是说就不管了...pool = PoolManager.getInstance();cn = pool.getConnection("development");sql = String.format(mapper.get("kfb_count"), yesterday);ps = cn.prepareStatement(sql);rs = ps.executeQuery();if (rs.next() && rs.getInt(1) &

很傻的問題但是也希望有人能答下我!

问题描述 VisualStudio2008和.net有什么區別!分別有什么用! 解决方案 解决方案二:一个是开发工具一个是语言解决方案三:VisualStudio2008是.net的开发工具解决方案四:不准确的说就像字典和中文的区别解决方案五:vs2008是开发工具是用来开发.net程序的...解决方案六:该回复于2008-05-26 19:35:48被版主删除

winxp-vbox5为什么装不了深度或木雨林风的镜像

问题描述 vbox5为什么装不了深度或木雨林风的镜像 vbox5载入深度或木雨林风的镜像,选择安装后出现如图界面怎么解决 解决方案 封装的Ghost镜像不可以,只能安装原版的镜像.试着把虚拟磁盘大小设置为固定的再试试 解决方案二: 我感觉vbox没有 vmware好用-vbox有点抽风

漫游费到底难不难取消

摘要: 7月3日京津冀三地消费者协会一起提交了关于取消三地之间通讯漫游费的呼吁,此次集体发声对于长期来往于三地的民众可谓是一个重磅消息,而对于那些居住在燕郊.廊坊的北漂来说 7月3日京津冀三地消费者协会一起提交了关于取消三地之间通讯漫游费的呼吁,此次集体发声对于长期来往于三地的民众可谓是一个重磅消息,而对于那些居住在燕郊.廊坊的"北漂"来说,一直以来的期待终于得到了回应. 其实关于取消漫游费的话题以及由来已久,只不过这次京津冀三地的共同发声,因为包含地域广,涵盖人口多所以更加让人关注,