我正在努力完善我对N_Tier arch的了解
在BLL内部,如果我在BLL中使用自定义业务对象,如CustomerInfo {FN,LS,...},请考虑我有Customer表和Currency表,Customer有一个默认货币,因此是Customer表中的FK Currency_ID,在UI层,我们需要显示货币符号而不是Currency_ID。 (SELECT ... INNER JOIN ..)
我可以将Currency符号作为CustomerInfo中的属性,而不是将CurrencyInfo的引用放在CustomerInfo中。
我认为不是答案,但为什么?什么可以变坏?
数据库中的每个业务表(不包括验证查找)是否应映射到业务对象?
我认为业务对象(包含从DAL带来的数据的对象)应该小心地映射到数据库中的表,这可以增加可维护性。但是BLL可以包含用于业务操作和业务验证的任何对象。
请给我一些书籍标题,或者掌握N层拱门的链接以及关于它的辩论。
感谢
答案 0 :(得分:0)
也许您应该阅读一些关于设计模式的优秀书籍(Wikipedia page on the subject链接到其中一些)。特别是,您可能会发现数据传输对象(DTO)的概念很好。通常的做法是使用与您的数据库紧密贴图的域模型,可能使用对象关系映射工具,如(N)Hibernate,iBatis等等,但是然后有一组转换器/适配器将这些对象转换为稍微平坦的对象(如您描述的CustomerInfo对象),它们更适合我们的应用程序显示和处理数据的方式。
答案 1 :(得分:0)
如果您想使用货币符号作为CurrencyInfo表的自然键,为什么不将它作为CurrencyInfo表中的主键呢?
Joe Celco http://www.celko.com/特别提倡这种方法。
Celko on SQL:自然,人工和代理键解释 http://intelligent-enterprise.informationweek.com/showArticle.jhtml;jsessionid=EJ2IXIZ2R4MSLQE1GHOSKH4ATMY32JVN?articleID=201806814