Mysql 数据库设计:具有多个数据类型的拆分列
我需要对一个名为Mysql 数据库设计:具有多个数据类型的拆分列,mysql,database-design,entity-attribute-value,Mysql,Database Design,Entity Attribute Value,我需要对一个名为AMOUNT的旧数据库字段进行分段,该字段允许用户将多种类型的数字数据(例如小数、整数、百分比)存储到同一列中。这些值的范围从100000000.00到0.00 AMOUNT中存储的值可以表示四种不同的数据格式: 以当地货币表示的金额(例如,100000000.00至00.00欧元、美元、日元等) 整数金额(例如0到12之间的整数) 百分比金额(例如,介于1和0.01之间的值) 例如: CURRENCY_ID | AMOUNT | TYPE |
AMOUNT
的旧数据库字段进行分段,该字段允许用户将多种类型的数字数据(例如小数、整数、百分比)存储到同一列中。这些值的范围从100000000.00到0.00
AMOUNT
中存储的值可以表示四种不同的数据格式:
- 以当地货币表示的金额(例如,100000000.00至00.00欧元、美元、日元等)
- 整数金额(例如0到12之间的整数)
- 百分比金额(例如,介于1和0.01之间的值)
CURRENCY_ID | AMOUNT | TYPE |
1 | 1000000 | Currency |
2 | 43234.33 | Currency |
NULL | 12 | Integer |
NULL | 0.67 | Percentage |
NULL | 0.58 | Percentage |
NULL | 10 | Integer |
我提出了以下设计建议:
TYPE_ID
的新列,该列指示数据类型ID(即1=以当地货币表示的金额,2=整数金额,3=百分比金额),并将其链接到包含所有可能类型ID的单独表
CURRENCY_ID | TYPE_ID | AMOUNT
1 | 1 | 1000000
2 | 1 | 43234.33
NULL | 2 | 12
NULL | 3 | 0.67
NULL | 3 | 0.58
NULL | 2 | 10
AMOUNT
列中的金额仍然表示不同的格式(大整数和小小数),因此并不统一
AMOUNT\u LOCAL\u CURRENCY
,AMOUNT\u PERCENTAGE
,AMOUNT\u INTEGER
),并将AMOUNT
的值存储到相应的列中
CURRENCY_ID | AMOUNT_LOCAL_CURRENCY | AMOUNT_INTEGER | AMOUNT_PERCENTAGE
1 | 1000000 | NULL | NULL
2 | 43234.33 | NULL | NULL
NULL | NULL | 12 | NULL
NULL | NULL | NULL | 0.67
NULL | NULL | NULL | 0.58
NULL | NULL | 10 | NULL
currency master for sample
Currency_ID | Type
1 | dollar
2 | euro
1001 | INT_Amt
1002 | PERC_AMT
根据经验,
选项2
是最好的原始表格有什么问题?虽然不太理想,但为什么需要更改它?建议1在逻辑上与原始表格并无不同。建议2是拥有多个表的一半。但由于缺乏更大的图景,所有的解决方案都缺乏依据。谢谢Stoleg。我主要关心的是,在同一列中有如此不同的格式(货币、百分比、其他度量尺度),这一点我觉得很奇怪,因为它们并不是直接度量同一事物。您似乎正在进入EAV模式设计。当心。
CURRENCY_ID | AMOUNT
1 | 1000000
2 | 43234.33
1001 | 12
1002 | 0.67
1002 | 0.58
1001 | 10