数据库设计防止无效的第三值

说我有2个项目:

  • 粉末(以克为单位)
  • 果汁(以毫升为单位)

我自然有一张桌子PRODUCT (product_id,product_name)

product_id,product_name
1,powder
2,juice

现在,果汁可以分别存储在1升和250ml的瓶子中,而粉末可以存储在100g或500g的香囊中。创建表BASE_UNIT(bunit_id,bunit_name),我有

bunit_id,bunit_name
1,ml
2,g

UNIT(unit_id,unit_name,unit_multiplier,bunit_fk)

unit_id,bunit_fk
1,1l bottle,1000,1
2,250ml bottle,250,1
3,100g sachet,100,2
4,500g sachet,500,2

我如何使用这种结构(以3NF形式)强制执行,使得果汁只能存储在ml中,同时能够添加更多的BASE_UNIT,例如ea

tombcat 回答:数据库设计防止无效的第三值

只需在产品表中添加一个unit_id列,使其成为base_unit表的外键-这将确保产品与基本单元之间一对多的关系。如果您拥有一种可以用多个单位进行度量的产品,则需要一个桥接表来在productbase_unit之间创建多对多关系。

本文链接:https://www.f2er.com/3165991.html

大家都在问