简单SQL设计问题:如何较好的表示多重属性

gauss 2000-06-08 11:59:00
所谓多重属性 (对不起,我不知道是不是这样说)

例如:我要表示一个父亲跟他的多个儿子的关系,
父亲可能没有儿子,也可能有N个儿子,
知道了父亲的ID,要较快和方便的找到他的全部的儿子的ID

在MSSQL中如何较好的设置表(即关系)来实现?

我问过一个人,他说没可能,只能把N个儿子的ID
记到一个Text里,然后自己处理,不会这样吧?

我数据库和SQL都不懂,还请高手多多指教。
...全文
233 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
gauss 2000-06-09
  • 打赏
  • 举报
回复
获益良多,谢谢各位。
gauss 2000-06-08
  • 打赏
  • 举报
回复

谢谢Un1,

正是考虑到“为每一个儿子增加父亲字段”效率不高,
我才向各位征求解决的方案的。

知道了父亲要找到他所有的儿子,就要遍历整个的“儿子”表,效率是很低的。
忽然想到这个效率问题是否可以给儿子的父亲字段加个索引来解决呢?

这种关系应该很常见,
现在大家用的又多是关系数据库,
应该有一个比较成熟的思路吧。

tanghuan 2000-06-08
  • 打赏
  • 举报
回复
设计一个表来表示父子关系,FatherSon(FatherID,SonID)
如系表为
father 1
son 2, 3, 4
grandson 5,6 7,8,9,10

表存储为:
1,2
1,3
1,4
2,5
2,6
3,7
3,8
3,9
3,10

这样,你就可以使用该表了
如找1的儿子
select SonID
from FatherSon
where FatherID=1
如果你找2的兄弟
select SonID
from FatherSon
where FatherID=(select FatherID
from FatherSon
where SonID=2) and
SonID<>2

如果你1找孙子
select b.SonID
from FatherSon a,FatherSon b
where a.FatherID=1 and
a.SonID=b.FatherID
你看,不是一样可以完成
Un1 2000-06-08
  • 打赏
  • 举报
回复
树型结构是关系数据库最差的表现。可能你需要为每一个儿子增加父亲字段。
halfdream 2000-06-08
  • 打赏
  • 举报
回复
这是典型的一对多关系。
常用的方法就是tanghuan在儿子表中增加父亲字段。
至于效率,只为只是两个表, 只要建好索引,速度未必不能接受。
如果只追求速度, 不注意实体自已的独立性, 那数据库的灵活性就会大大降低了。
tanghuan 2000-06-08
  • 打赏
  • 举报
回复
拥有索引的数据表选取数据速度不会很慢,如果你在上万条中选取几十条或上百条,会很快,当然这主要与你的机器,内存,硬盘有关
gauss 2000-06-08
  • 打赏
  • 举报
回复

谢谢tanghuan,

刚才忙着打上一篇文章,看不到你发的解答。
您的方案无疑是解决了我的问题,
但是还是效率的问题了,
当FatherSon表增大的时候,效率是否会降低呢?
怎么解决?

sunsol 2000-06-08
  • 打赏
  • 举报
回复
当然需要索引,这是一对多的关系还是挺简单的.
必要的时候可以把这个关系专门作为一个数据表.
加上关联就可以了.
通过慢sql分析的学习,了解什么是慢sql,以及慢SQL会引起那些性能问题。清楚慢sql日志的设置,然后再通过慢sql分析工具的学习,清楚慢sql分析的步骤和流程。慢sql分析工具:mysqldumpslow工具、explain工具、profile工具、Optimizer Trace工具。 提供课程中所使用的sql语句。 课程内容:第一章:课程简介1、课程介绍2、课程大纲 第二章:慢sql简介1、慢sql简介2、慢sql会引起的问题 第三章:慢日志的设置1、慢sql的分析流程2、慢日志参数理解3、慢日志参数设置:第1种方式:my.ini文件设置4、慢日志参数设置:第2种方式:sql脚本设置5、慢日志参数设置-效果验证 第四章:如何发现慢sql1、如何发现慢sql:第1种方式:慢日志文件2、如何发现慢sql:第2种方式:mysql库的slow_log表 第五章:慢sql分析工具1、慢sql提取-mysqldumpslow工具-使用方法2、慢sql提取-mysqldumpslow工具-操作实战3、慢sql的执行计划分析-explain分析-执行计划结果说明4、慢sql的执行计划分析-explain分析-索引介绍+type类型举例5、慢sql的资源开销分析-profile分析-分析步骤6、慢sql的资源开销分析-profile分析-show profile执行阶段说明7、慢sql的资源开销分析-profile分析-完整列表说明+操作实战8、慢sql的跟踪分析-Optimizer Trace分析-分析步骤9、慢sql的跟踪分析-Optimizer Trace表的介绍10、索引失效场景举例 第六章:慢日志清理1、慢日志清理

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧