我有一个用例,我需要为参考数据建模,例如不同口味的冰淇淋.说我有50种口味的冰淇淋: –
> 20个属性,例如所有口味都可以分享冰冻的温度
>每种口味的冰淇淋都有20-30个属性,不会与其他口味共享,例如: : –
>草莓冰淇淋可能会跟踪酸味,水果百分比等.
>巧克力冰淇淋可能会追踪苦味,可可等级.
我如何在数据库模型中整齐地建模这些数据,纯粹从存储/检索的角度来看?
我能想到的选择: –
>每种口味一张桌子.这将需要50个表,每个表将有20个彼此重叠的列,以及另外20-30个属性,这些属性将是独特的.
>优点:很好地模拟每种口味的数据
>缺点:列重叠和需要大量表
>一张适合各种口味的餐桌.这只需要1个表,但需要1000列,其中大部分都是空的.
>优点:一般来说,很好地模拟冰淇淋的数据
>缺点:大量的列和大量的“浪费”空间
解决方法
我有一个包含所有公共属性的表,然后是另一个用于非共享属性的表.例如:
CREATE TABLE ICE_CREAM_FLAVOR (FLAVOR VARCHAR2(100) PRIMARY KEY,FREEZING_TEMP NUMBER,CREAMINESS NUMBER,ETC VARCHAR2(25),BLAH NUMBER); CREATE TABLE ICE_CREAM_FLAVOR_ATTRIBUTE (ID_ICF_ATTRIBUTE NUMBER,-- should be populated by an insert trigger FLAVOR VARCHAR2(100) NOT NULL REFERENCES ICE_CREAM_FLAVOR(FLAVOR),ATTRIBUTE_NAME VARCHAR2(25),ATTRIBUTE_VALUE VARCHAR2(100));
你的旅费可能会改变.
分享和享受.