商店表:存储有关不同商店的信息的表
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”和市区单词将被点击以链接到分支机构!
我知道这还不够清楚!但我希望你能得到它 当然,您可以询问任何进一步的细节或问题,使图片更清晰!
答案 0 :(得分:0)
Kashef,
每家商店只在一个地区,对吗?如果是这样,请创建一个与区域表具有外键关系的商店表(即商店表中的RegionID)。
如果不同的商店属于同一品牌/公司,请创建公司表并设置商店表的foriegn键。
设置看起来像
地区表--->商店< ----公司
这是你的情况吗?如果是这样,请告诉我,我会谈论这些课程。
埃里克
根据评论进行编辑
在这种情况下,你真正需要区域和商店之间的多对多关系,具有不同的主键(即,不是RegionID + StoreID)。
地区表---> RegionTable< ---商店< ----公司
这将允许您在单个区域中拥有多个商店。但是,它还允许单个商店的多个区域!您可以使用约束来解决此问题,该约束确保每个商店只有一个区域。
这有意义吗?
埃里克
答案 1 :(得分: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%