Architecture 对象映射-展平到属性而不是对象引用

Architecture 对象映射-展平到属性而不是对象引用,architecture,modeling,Architecture,Modeling,我正在努力完善我对N_Tier arch的知识 在BLL中,如果我在BLL中使用自定义业务对象,如Customer信息{FN,LS,…},考虑到我有客户表和货币表,客户有默认货币,因此在客户表中有一个FK CurrnyYyID,在UI层,我们需要显示货币符号而不是CurrnyCyId。 我可以将货币符号作为属性放在CustomerInfo中,而不是将CurrencyInfo的引用放在CustomerInfo中吗。 我想答案是否定的,但为什么呢?什么会变坏? 除了数据库中的验证查找之外,每个业务表

我正在努力完善我对N_Tier arch的知识

在BLL中,如果我在BLL中使用自定义业务对象,如Customer信息{FN,LS,…},考虑到我有客户表和货币表,客户有默认货币,因此在客户表中有一个FK CurrnyYyID,在UI层,我们需要显示货币符号而不是CurrnyCyId。 我可以将货币符号作为属性放在CustomerInfo中,而不是将CurrencyInfo的引用放在CustomerInfo中吗。 我想答案是否定的,但为什么呢?什么会变坏? 除了数据库中的验证查找之外,每个业务表是否都应该映射到一个业务对象? 我认为包含DAL带来的数据的业务对象应该小心地映射到数据库中的表,这可以增加可维护性。但是BLL可以包含任何用于业务操作和业务验证的对象。 请给我一些书的标题,或链接,以掌握N层拱门和有关它的辩论。


谢谢

也许你应该读一些关于设计模式的优秀书籍,以及其中一些的链接。特别是,您可能会发现数据传输对象DTO的概念很好。有一个与数据库紧密映射的域模型是非常常见的做法,可能使用对象关系映射工具,例如,但要有一组转换器/适配器,将这些转换成稍微平坦的对象,如CustomerInfo对象,您可以描述它更适合我们的应用程序显示和处理数据的方式。

如果要使用货币符号作为CurrencyInfo表的自然键,为什么不把它作为CurrencyInfo表中的主键呢

乔·塞尔科特别提倡这种方法

SQL上的Celko:解释了自然键、人工键和代理键

问题不在于数据库设计概念!!