【发布时间】:2012-06-23 20:49:13
【问题描述】:
我有一个关于我的数据库设计及其实现的问题,希望有人能帮助我吗?
我有一个产品 -> 零售商场景,其中适用以下规则:
产品 - 许多零售商 产品 - 1 个品牌
零售商 - 许多产品
价格可能因零售商而异
所以我有 4 张桌子
product - (Product_ID), product name, brand_ID(FK), details
brand - (Brand_ID), brand name
retailer - (Retailer_ID), retailer_Name, Retailer_Telephone
Retailer_Product - (Product_ID, Retailer_ID), cost,
这很好用,因为您可以将产品与零售商关联起来,而并非所有零售商都提供所有产品等。每个产品都有一个固定的品牌。
我的问题来自品牌:
零售商可以提供 1 个或多个品牌,但不一定提供所有品牌?我在执行此操作时遇到问题?
所以我创建了一个 Retailer_Brand 表
retailer_brand - (retailer_Id, Brand_ID)
即使您已指定零售商到品牌的链接,我仍然可以在零售商产品表中输入与零售商无关的品牌的产品。我是否遗漏了诸如检查约束之类的内容,还是我的架构错误?
谢谢
罗伯
*编辑更多细节*
我仍然不确定它是否能满足我的需求。
也许如果我添加以下示例它会澄清。
我有一个我们可以提供的产品设置列表
例如 名称 描述 品牌 电视 32 英寸索尼 电视 64 英寸索尼 电视 20 英寸索尼 电视 64 英寸三星 电视 32 英寸三星 电视32寸松下
零售商 Uberhardware - 可以销售所有品牌的电视 SonyRetailer - 只允许销售索尼产品(所有产品) PanasonicRetailer - 仅限 Panasonic 产品
然后我需要设置一个新零售商: 凤凰零售 - 不允许销售索尼产品
我希望能够轻松地限制/启用每个零售商的不同品牌?
编辑 2
我已经实施了建议的备用键设计,但我仍然能够输入不正确的日期,请参阅下面的数据设置和预期结果,但是当我预计有些失败时,零售商产品表中的所有输入都会成功?
产品
ProductID BrandID
1 1
2 2
品牌
品牌ID
1
2
Reatiler
1
2
RetailerBrand
RetailerID BrandID
1 1
2 1
2 2
3 1
RetailerProduct
RetaileID Brand ProductID 预期
1 1 1 好的
1 2 2 失败
2 1 1 正常
2 2 2 好的
3 2 2 失败
【问题讨论】:
-
按原样在 sql server 2008 上工作;
-
现在一切正常,只需要找出我的数据建模器在创建链接时出错的地方。