Era*_*nga 0 oracle database-design
我们必须创建几个表,仅用于在Oracle中进行报告.
选项1
应收账款表
选项2
应收账款表
注意:对于给定的RefNo,所有类型的税,费和保费或其子集都可以存在.
什么是最佳结构(表将有超过100k的记录)
这些都不是最好的(就DBA的想法而言).最好的是(假设RefNo是唯一的,因此是主键):
Receivables:
RefNo
Date
ReceivableDollarVals:
RefNo
Type
Amount
Run Code Online (Sandbox Code Playgroud)
如果RefNo/Date是主键,也可以将日期添加到第二个表.
这允许您最小化那些不具有所有三种类型的行的存储空间(尽管节省的是最小的).然后使用WHERE组合两个表(或JOINs)的子句来进行查询.
它还允许您随意添加其他类型而无需重构数据库.
但是,您需要记住,第三范式是理想的.只要您了解其含义,违反规则以获得性能是完全可以接受的.
100,000个记录实际上非常小,所以,除非你认为你将在不久的将来添加更多类型,我会选择你的选项2并使用零来存储那些不存在的值.NULL很可能会使您的查询更复杂一些.