我目前在我的数据库,商店和产品中有2个表.每个产品都有自己的ID 1-2000,每个商店都有自己的ID 1-200.
我关于数据库设计的问题是,我如何跟踪每家商店的产品?
>例子
>商店1有产品1,5,10,200
>商店2有产品2,5,7,100
>商店3有产品1,7,10,300
>等……
>我的store表中是否有一个列,其id存储为由{1; 5; 10; 20}之类的列分隔的字符串(可能在1个字符串中有数千个条目)?
>我是否应该只有[id | storeID | productID]的另一个表(表中存储(x)产品的可能性)?
解决方法:
您的问题可以通过实体关系图(使用dia创建)建模:
.
有两个实体“产品”和“商店”,这些实体之间存在m-n关系“股票”. “product”具有唯一确定产品的属性“productId”. “store”具有唯一属性“storeId”,该属性唯一地确定商店.
我添加了“quanity”,“storeAddress”和“productName”属性,使模型更复杂一些.这些属性不能通过您的描述派生,如果您希望设计遵循您的描述,可以从图表和结果表中删除它们. n-m-realtionship意味着商店可以存储不同的产品,并且产品可以在不同的商店中存货.我们有以下问题:
>每个商店都有唯一的ID和地址
>每个产品都有一个唯一的Id和一个名称
>商店可以存储不同数量的不同产品
最后一句话也可以用这种方式表达
>产品可以存放在不同数量的商店中
这样的图可以在关系模型中转换.每个实体都是一个表,其中属性是列.唯一标识符是主键. m-n-relation是一个表,其中主键是a(storeId,productId)对.如果关系具有属性,则此属性是表中的列.
所以我们有以下关系(表)
store("storeId", storeAddress)
product("productId",productName)
stock("storeId","productId",quantity)
标签:mysql,database-design
来源: https://codeday.me/bug/20190806/1595460.html