当前位置: 代码迷 >> Sql Server >> 请教:如果需要从不同的角度查询数据库,应该如何设计表结构
  详细解决方案

请教:如果需要从不同的角度查询数据库,应该如何设计表结构

热度:73   发布时间:2016-04-24 10:27:10.0
请问:如果需要从不同的角度查询数据库,应该怎么设计表结构
我们现在的逻辑是这样的:

有若干房间,房间中可以放置若干桌子,桌子上面可以放若干杯子, 每个房间中可以放多种类型的 table, 每种类型的table 数量可能是从1 -- N,  每张 table上可以放置多种类型的杯子,每种类型的杯子数量是从1 -- N

数据量大约是: room1 -- room100, table_type1 -- table_type10000000(一千万), cup_type1 -- cup_type100000000(一亿),
现在我们的需求是需要以不同的角度来查看数据,比如 
1 查看 room20 中放了那些 table,  这些  table 上边又放了那些 cup, 并且数量是多少
2 查看  table_type231 分布在那些 room 中, 并且table 上边的cup 的类型和数量
3 查看 cup_type123 分布在那些桌子上以及那些房间中,数量是多少

并且考虑到可能会修改物品的放置情况,比如说 关闭 room20, 那么 room20 中所有的 table, cup信息都需要删除,或者不删除只是做个标记。 或者 从 room3 中 移除 table_type100。  或者将 table_type20 添加到 room5中。 或者在所有的table_type100上添加cup_type100

如果要满足以上的需求应该怎么设计表结构最灵活高效? 希望各位能多给些建议

------解决方案--------------------
房间表,桌子表,杯子表.
感觉楼主的查询没有什么特殊的,表结构基础就那样了.
------解决方案--------------------
基础表

房间 room 表,记录房间信息
桌子 table 表,记录桌子信息
杯子 cup   表,记录杯子信息

关联关系表

主表      room - table 关系表   记录桌子所在房间   加主键列
明细表  table - cup    关系表   记录杯子所在桌子   加一字段对应主表主键
------解决方案--------------------
2张Type表,tabeltype、cuptype。
3张对象表room,table,cup
2张对应表room对象 vs table对象 ,table对象 vs cup对象(可以有删除标记字段)

这只是表设计,不考虑大数据量的设计。

  相关解决方案