fli*_*p66 4 mysql database-design
我目前在我的数据库、商店和产品中有 2 个表。每个产品都有自己的ID 1-2000,每个商店都有自己的ID 1-200。
我关于数据库设计的问题是,我如何跟踪每个商店有哪些产品?
例子
我是否应该在我的商店表中有一列将 id 存储为由诸如 {1;5;10;20} 之类的列分隔的字符串(在 1 字符串中可能有数千个条目)?
我应该有另一个只有 [id|storeID|productID] 的表(表中可能有商店(x)产品)?
Phi*_*lᵀᴹ 10
您提供的第一个选项是“NoSQL”设计模式,并且不允许在普通 RDBMS 中轻松查询。
你的第二个选择是最合适的。有一个第三个表来跟踪哪些产品在哪家商店。可能称为“库存” - 如果您想跟踪每家商店的每件商品的数量,您可以为此添加一个计数。
您的问题可以通过实体关系图(用 dia 创建)建模:
.
有两个实体“product”和“store”,这些实体之间存在一个 mn 关系“stocks”。“product”具有唯一确定产品的属性“productId”。“store”具有唯一属性“storeId”,它唯一地确定了商店。
我添加了属性“quantity”、“storeAddress”和“productName”以使模型更复杂一些。这些属性不能从您的描述中获得,如果您希望设计严格遵循您的描述,您可以将其从图表和结果表中删除。nm-realtionship 意味着商店可以存放不同的产品,并且产品可以在不同的商店中存货。我们有以下问题描述:
最后一句也可以这样表达
这样的图可以在关系模型中转换。每个实体都是一个表,其中属性是列。唯一标识符是主键。mn-relation 是一个表,其中主键是一个 (storeId,productId) 对。如果关系具有属性,则该属性是表中的一列。
所以我们有以下关系(表格)
store("storeId", storeAddress)
product("productId",productName)
stock("storeId","productId",quantity)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2300 次 |
最近记录: |