数据库最难的就是------?

宏哥 发布于 2012/06/30 18:22
阅读 1K+
收藏 2

不是RAC,也不是性能调优.

最难的就是表设计了.

比表设计更难的是,把表关系设计更改了,应用的很多地方机会相当于重写. 

 

加载中
1
宏哥
宏哥

引用来自“超级奶爸老谭!”的答案

引用来自“宏哥”的答案

引用来自“抢小孩糖吃”的答案

大部分逻辑问题应该是由程序来完成 数据库 就作为存储数据的地方 预览 等等

你是搞mysql的吧. 应该没有见过真正的数据库. mysql不是数据库

所以搞mysql都在处理那些一个sql可以完成的东西,他们需要用10000行代码才能做到,而不能保证正确性.

程序做集合操作比数据库专业?

有些时候,逻辑最好是放到程序里面,而且如果说做集合操作的话,c#的linq和lambda都不错,效率挺高的。java 8也会支持lambda了。

不过对于最求极致性能的程序来说,还是在数据库执行比较方便。只是管理起来比较麻烦。

对于数据库的定义,我认为电话本(纸质)是一个数据库,一份Excel文档也是数据库,Oracle是数据库,MySQL也是数据库,只是应用范围不一样。

你道行还未到数据库应用的层面.

"只是管理起来比较麻烦。" ,你刚好说反了.

我可以用一句SQL表达, 让你用10000代码都无法实现的逻辑,而且你无法保证数据一致性和有效性,可以让你永远在修改BUG,修理数据.

搞OS的人,大多对一致性,对质量完全么有概念. 所以这些工作,待遇,工作环境都极其糟糕.

直接给你一个案例:

select * from v_content where ( role_id in (select id from (select * from connectby('cms_role','id','pid','id','0',0,';') as t(id int, pid int, level int, branch text, pos int) where level >=1) utree) or owner_id='10000')

所有的OS软件,没有任何一个能实现这个逻辑.

OSC上,能看懂这个的,不会超过1%

你能在10万行代码能够实现这个逻辑,算你本事.

1
宏哥
宏哥

引用来自“看能不能改个名”的答案

@宏哥 

我想做你说的1%, 可惜我还真没看懂。

select * from v_content where ( role_id in (select id from (select * from connectby('cms_role','id','pid','id','0',0,';') as t(id int, pid int, level int, branch text, pos int) where level >=1) utree) or owner_id='10000')

其中,红色和绿色部分不懂,希望能指导一下。

connetby 是对子树遍历. utree是结果集的名字.

数据库可以对任意结果集,给定名字,并在这个基础上,再做结果集运算.

这个SQL表达的逻辑是.

查询出 用户自己的v_content数据,以及 用户管理的组织下的数据. 自动进行递归授权.

在组织中的含义,就是管理者,自动获得所有的被管理者授权.

这个表示, 任何一个人,自动获得所有的下属授权, 无限深度递归.

同时,组织变更即时生效, On demand 有效性.

 

这个逻辑,在程序当中是无法实现的.特别是要求on demand的情况.

要坚持两个凡是. 凡是OS都是垃圾,凡是高喊OS口号的人都是垃圾.

宏哥
宏哥
@mark35 能用到connectby 的软件,的确都比较贵.
mark35
mark35
我现在只能看懂WITH遍历子树的级别~ 能到connectby级别了估计项目预算就是几十上百万啦 呵呵
Y-QTCe
Y-QTCe
看不懂没什么关系的。各家数据库对标准SQL的实现各有不同,还加了各自的扩展,没遇到过自然是不认识。 这个函数应该是PostgreSQL的,了解一下就会了。
泡不烂的凉粉
泡不烂的凉粉
回复 @宏哥 : 谢谢你宽慰的回复。 学无止境,慢慢修炼。
宏哥
宏哥
回复 @看能不能改个名 : 红薯也达不到这个要求.
下一页
0
Inside
Inside
赞同,要经过长期实践才能摸出门道,一开始要么干得太干净太教科书,要么干得太脏太随意
0
feesx
feesx
是的,设计太重要
0
抢小孩糖吃
抢小孩糖吃
不能太教科书 要估计程序使用的容量是多少才能够 针对表进行设计
0
中山野鬼
中山野鬼
哈。。。应用的东西,不是很关注。
0
开源狂人
开源狂人
一个超烂的设计,能折磨死十个DBA。
0
mallon
mallon
这个只能实打实地靠经验
0
mallon
mallon
我们这里一位Oracle大师就很郁闷,项目复杂的逻辑都推到了数据库,所以一有问题肯定找他麻烦,嘿嘿
0
抢小孩糖吃
抢小孩糖吃
大部分逻辑问题应该是由程序来完成 数据库 就作为存储数据的地方 预览 等等
返回顶部
顶部