关于使用C#进行合适的数据库设计和实现的建议

时间:2010-11-04 02:03:26

标签: c# sql webforms

商店表:存储有关不同商店的信息的表

StoreId     Name       PlaceCode  
--------    --------   --------     
1           Addidas     AB1         
2           Nike        KS3         
3           Puma        LS6         
4           Nike        AS2         
5           Nike        WR4

区域表

AreaId   Area
------   -------
1        DownTown
2        UpTwon

商店区域表: 的修改

StoreId   AreaId
-------   -------
1         1
2         2
3         2
4         1
5         2
耐克的例子不仅仅是它的商店分店 所以我的想法是拥有多个名称属性为“nike”的记录,但其他属性将包含有关分支的信息。

我使用StoresArea Table来创建多对多关系,但我认为它可以通过一对多的关系实现......而且令人困惑,所以我希望得到一个好的建议,以便它可以帮助我遵循良好的做法!

我创建了一个名为store的类,用于保存有关每个商店的信息。但我想添加一个额外的变量,我认为它将是一个数组,该变量将保存有关给定商店的所有分支的信息。

我认为这些信息将是:
1 - 分支的PlaceCode
2 - Id所以我可以使用查询字符串来提供访问所有其他分支的URL吗?StoreId = Id
3 - 分支区域
直截了当地说,我希望任何给定商店的详细页面都有一个名为branches的字段,它将显示Branch的Area +所有其他可用分支的PlaceCode。例如,“分支机构:市中心:AS2”和市区单词将被点击以链接到分支机构!

我知道这还不够清楚!但我希望你能得到它 当然,您可以询问任何进一步的细节或问题,使图片更清晰!

2 个答案:

答案 0 :(得分:0)

Kashef,

每家商店只在一个地区,对吗?如果是这样,请创建一个与区域表具有外键关系的商店表(即商店表中的RegionID)。

如果不同的商店属于同一品牌/公司,请创建公司表并设置商店表的foriegn键。

设置看起来像

地区表--->商店< ----公司

这是你的情况吗?如果是这样,请告诉我,我会谈论这些课程。

埃里克

根据评论进行编辑

在这种情况下,你真正需要区域和商店之间的多对多关系,具有不同的主键(即,不是RegionID + StoreID)。

地区表---> RegionTable< ---商店< ----公司

这将允许您在单个区域中拥有多个商店。但是,它还允许单个商店的多个区域!您可以使用约束来解决此问题,该约束确保每个商店只有一个区域。

这有意义吗?

埃里克

答案 1 :(得分:0)

作为一般规则,我建议使用业务语言来定义您的软件概念。因此,我会使用“分支”这个词来定义人们可以购买东西的具体物理位置。我会在项目的第一步中定义这种共享的商业语言。

然后,有助于在半正式语法中使用此业务语言来处理这些概念。我想你说的如下。

  • 有很多公司(耐克,阿迪达斯等)
  • 每家公司都有一个或多个分支机构。
  • 分支只有一个区号。
  • 一个区号可能包含0个或更多分支。

在这种情况下,该模型是Erick T建议的第一个解决方案(原谅我没有使用他所使用的相同名称)。

具体做法是:

表公司

COMPANY_ID     NAME
---------------------
1              Nike
2              Adidas
3              Reebok

表区域

AreaId   Area
------   -------
1        DownTown
2        UpTown

表分支

BRANCH_ID       COMPANY_ID       AREA_ID       ADDRESS
-------------------------------------------------------
1               1                1             The Mall
2               1                2             High Street
3               2                1             Near MacDonalds
4               3                2             Out of town

要查找给定分支的公司的其他商店,您只需要分支ID:

select *
from branch
where company_id =
 (select company_id from branch where branch_id = %current_branch_id%