当我有一个共同实体时,数据库,DataAccess和业务层设计

时间:2011-09-17 07:56:15

标签: c# asp.net architecture

我的网站包含很多类型的商家,每个商家都有自己的图层,但现在我有一个名为Brand的公共实体。

我是否应该为每个商业品牌信息提供表格,例如:

DB Table
Business1_BrandsInfo
....................

DB Table
Business2_BrandsInfo
...etc ?

当然,我会为每个企业的每个品牌信息都有一个单独的商业实体。

或者我应该有一个公用表并为每个业务添加一个ID来定义该品牌所属的业务。

这几项业务并不相关,但我对每个品牌都有相同的典型信息,无论业务类型如何,我在网站上有5种不同类型的业务。

3 个答案:

答案 0 :(得分:0)

简单:如果它对每个表具有相同的属性,那么您可以将它放在1个表中并通过TypeId列识别它们。

如果您有多于一种类型,那么您还需要多于1个实体来满足这些表格。

识别的类型也将在课堂上。

请注意,如果明天您将添加一个特定列以输入“1”,那么您将遇到问题......

答案 1 :(得分:0)

我认为共同实体是指您网站中所有商家共享的对象。如果是这种情况,您的数据库模式应该反映所有品牌的单个表,但它应该有一个BusinessID列,其中包含与其关联业务的外键。

[dbo].[Brands]
ID
BusinessID → [dbo].[Businesses].[ID]
...

[dbo].[Businesses]
ID ← [dbo].[Brands].[BusinessID]
...

您可以根据需要添加任意数量的商家和品牌,但稍后如果您希望自定义属性因企业或品牌而异,则该架构必须更改,或者您必须设计一些这些自定义字段的其他方法。

答案 2 :(得分:0)

我会将这些分开。以下是两个选项。您不需要重复具有相同类型数据的表。

选项1

Brands
{
  ID,
  BusinessID,   (FK to Business.ID)
  Info1,
  Info2
}

Business
{
  ID,
  BusinessName,
  BusinessDesc,
  OtherStuff1,
  OtherStuff2
}

选项2

Brands
{
  ID,
  Info1,
  Info2
}

Business
{
  ID,
  BusinessName,
  BusinessDesc,
  OtherStuff1,
  OtherStuff2
}

BusinessToBrands
{
  ID,
  BrandsID(FK to Brands),
  BusinessID(FK to Business)
}