有一个非常相似的问题:用截然不同的需要知道的信息集对产品进行建模并将它们链接到产品线?但我找不到对我有帮助的答案;
上述问答中有人指出设计数据库来保存不同的元数据信息,这有一个很好接受的答案,但由于我的程序明确需要搜索功能,我不希望性能受到影响。
我是一名“技术员”,使用 PHP + Oracle 来跟踪我们公司的销售进度并生成报告。我们的工作流程通常如下所示:
- 营销人员为我的系统提供准备好的数据集;
- 一线员工(销售)在我的系统上标记进度;
- 任何人都可以在系统中搜索结果;
- 我生成报告给营销人员。
问题:
数据集的许多列是相同的(或可以认为是相同的),如下所示:
account|customer_name|gender|location|program_segment|...
但是营销部 喜欢提出新想法(并放弃现有想法),因此每个“销售计划(活动)”可能都有自己的数据,例如
对于程序 1,它们可能包含:
...|prev_coupon_code|last_usage_amount|...
但是,对于程序 2,它们可能包含:
...|is_in_plan_1|is_in_plan_2|...
你明白了。
不成功的尝试:
为了保存所有数据,我曾经使用具有所有可能属性(列)的“足够长”的表,并保留空白/不必要的属性
NULL
。但是现在感觉永远都“不够长”,因为“属性”太多,“销售重点”更多:我为新版系统起草了一个41列的表格,突然他们提出了一个包含不适合的信息的新程序。
有人建议我在表格中创建“虚拟列”并在前端“记住”它们的不同含义。这可以适用于多种数据类型,例如
NUMBER(1)
Y/NDATE
等,但是在谈论 时VARCHAR2
,我不确定其中有多少就足够了……而且这会使表格看起来“脏”。
问题:
沮丧,我现在正在认真考虑为不同的程序使用不同的表格,并使用UNION
子句生成大报告,以防他们被问到“我们这个月/季节/年的销售情况如何?”
从技术上讲,这是一个好习惯吗?我应该实施吗?
编辑#1:
澄清一下,一个“销售程序”通常会运行几个月后被放弃,每个运行程序每月至少有一个数据集。
并且可以同时运行多个程序。
编辑#2:
那些“程序指定”的列有不同的数量:一个程序可能需要 10 个,而另一个可能只需要 1 个。