3.2 本系列文章附带示例说明

本文章中将使用微软SQL Server 2012示例:AdventureWorks数据库中的产品(Product)相关表做为构建主数据对象。AdventureWorks示例数据库可以从微软官方网站上面下载。本文章中运行环境为Windows Server 2012 DataCenter版本+SQL Server 2012企业版,全部示例代码测试通过,在相似环境中,应该也可以直接运行。所有相关表如下ER图所示:

其中主表为Product,对应的创建脚本如下:

CREATE TABLE [Production].[Product](
 [ProductID] [int] IDENTITY(1,1) NOT NULL,
 [Name] [dbo].[Name] NOT NULL,
 [ProductNumber] [nvarchar](25) NOT NULL,
 [MakeFlag] [dbo].[Flag] NOT NULL,
 [FinishedGoodsFlag] [dbo].[Flag] NOT NULL,
 [Color] [nvarchar](15) NULL,
 [SafetyStockLevel] [smallint] NOT NULL,
 [ReorderPoint] [smallint] NOT NULL,
 [StandardCost] [money] NOT NULL,
 [ListPrice] [money] NOT NULL,
 [Size] [nvarchar](5) NULL,
 [SizeUnitMeasureCode] [nchar](3) NULL,
 [WeightUnitMeasureCode] [nchar](3) NULL,
 [Weight] [decimal](8, 2) NULL,
 [DaysToManufacture] [int] NOT NULL,
 [ProductLine] [nchar](2) NULL,
 [Class] [nchar](2) NULL,
 [Style] [nchar](2) NULL,
 [ProductSubcategoryID] [int] NULL,
 [ProductModelID] [int] NULL,
 [SellStartDate] [datetime] NOT NULL,
 [SellEndDate] [datetime] NULL,
 [DiscontinuedDate] [datetime] NULL,
 [rowguid] [uniqueidentifier] ROWGUIDCOL  NOT NULL,
 [ModifiedDate] [datetime] NOT NULL,
 CONSTRAINT [PK_Product_ProductID] PRIMARY KEY CLUSTERED
(
 [ProductID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

我们将使用该表中的ProductNumber字段对应为主数据中的Code,Name字段对应主数据中的Name。观察ER图发现,该表与其他业务对象的关系主要为三种:

1、ProductID做为其他表的外键;(ProductDocument表--1toN关系)

2、Product表中关联其他表主键;(ProductSubCategory表--1to1关系)(ProductModel表--1to1关系)

3、Product表与其他表存在N对N关系,使用中间关系表进行关联;(ProductPhoto表--NtoN关系)

上诉三种关系符合并且覆盖了一般情况下,我们对数据库进行设计时,对象之间关系。由于我们选取Product做为模型的主对象(业务概念上理解,完成产品生产、预订等流程,都是使用产品(Product)对象来执行的,我们即使存在Product与其他对象Nto1的关系(例如ProductCategory对象),其他对象也不会做为主数据模型暴露的核心对象来使用,所以不用考虑。我们选取的主数据对象(Entity)和模型(Model)之间的关系,建议Model针对不用的业务域(业务领域例如HR、Payroll、Product等)来进行划分,但是如果业务领域对象(Entity)之间的关系比较紧密,也可以考虑合并到一个模型(Model)中。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值