首页 加入收藏

.Net中的反射

2015年07月10日 15:31供稿中心: 课工场
摘要:建表及其问题我们再看看另外一种情况,我们需要标识酒店预订的状态:未提交、已提交、已取消、受理中、已退回、已订妥、已过期。

 

        此时,很多开发人员会在数据库中建立一张小表,叫做BookingStatus(预订状态),然后将如上状态加入进去,就好像这样:

  如同城市(City)表一样,在系统的其他表,比如说酒店订单表(HotelOrder)中,通过字段StatusId引用这个表来获取酒店预订状态。然而,几个月以后,虽然看上去和城市表的用法一样,结果却发现这个表只在数据库做联合查询或者 只在程序中调用,却从来不做修改,因为预订流程确定下来后一般是不会变更的。在应用程序中,也不会给用户提供对这个表记录的增删改操作界面。


       而在程序中调用这个表时,经常是这种情况:我们需要根据预订状态对订单列表进行筛选。此时通常的做法是使用一个下拉菜单(DropDownList),菜单的数据源(DataSource),我们可以很轻易地通过一个SqlDataReader获得,我们将DropDownList的文本Text设为Status字段,将值Value设为Id字段。
此时,我们应该已经发现问题:
  • 如果我们还有航班预订、游船预订,或者其他一些状态,我们需要在数据库中创建很多类似的小表,造成数据库表的数目过多。

  • 我们使用DropDownList等控件获取表内容时,需要连接到数据库进行查询,潜在地影响性能。

       同时,我们也注意到三点:
  • 此表一般会在数据库联合查询中使用到。假设我们有代表酒店订单的HotelOrder表,它包含代表状态的StatusId字段,我们的查询可能会像这样:Select *, (Select Status From BookingStatus Where Id = HotelOrder.StatusId) as Status From HotelOrder。

  • 在应用程序中,此表经常作为DropDownList或者其他List控件的数据源。

  • 这个表几乎从不改动。



  • 相关阅读
恭喜北大青鸟深圳嘉华学士后Java专业JT50班立项成功2017.06.15
【学员故事】高中毕业,我在北大青鸟的日子2017.06.14
北大青鸟深圳嘉华学校第二届校园篮球赛火热进行中2017.06.09
轮机工程专业大学生转行到北大青鸟学Java获成功2017.06.08
6月北大青鸟深圳嘉华篮球赛等你来战2017.06.05
  • 全国校区查询
  • 新手入门点击榜
  • 新手入门最新文章
  • 热门标签
关于我们
公司简介
发展历程
青鸟荣誉
联系我们
加入我们
青鸟课程
ACCP
学士后Java
BENET
网络营销
启蒙星IT工程师基础课程
学习客户端下载
青鸟优师
青鸟微讯
学士后Android软件工程师
网络营销师1.0
关注我们
RSS订阅
北大青鸟网络营销学院
北大青鸟学员社区
北大青鸟官方微信
北大青鸟微社区
回顶部 新版反馈 回到首页
官方新版意见收集

*

官方新版意见收集

提交成功,感谢您的反馈。

我们会认真阅读和考虑每个用户的反馈。