如果要组合材料以制成新材料,应如何为新材料设计桌子?

时间:2021-07-02 15:30:58

标签: sql oracle

我有一个程序可以将不同的材料组合成一种新材料。存储此类数据的最佳实践是什么? (即,视图或表格或其他东西?)

表 1:

<头>
MATERIAL_ID MATERIAL_DESC
1 苹果
2
3 肉桂
4 PIE_CRUST

输入:组装材料 -->

-- 苹果

-- 糖

-- 肉桂

-- PIE_CRUST

输出:材料组装-->

-- APPLE_PIE 已创建

我认为 APPLE_PIE 应该作为带有新 MATERIAL_ID 的 MATERIAL 返回到原始表中,但是我应该如何处理旧数据?

在某些情况下,可以从组件中取出材料。当发生这种情况时,它应该保留它的原始 MATERIAL_ID 还是只拥有一个新的并清除旧数据?我不知道这种情况的最佳做法是什么。如果可能的话,我希望看到比理论更实用的东西。

1 个答案:

答案 0 :(得分:1)

我假设您已经知道作为输出结果将创建什么材料,因此您只需在材料表中插入新材料,然后在其他表中插入配方。

您可以在修改 material_recipe 表的任何配方中删除或添加新材料。

以下代码示例:

create table material
(
material_id number generated by default as identity,
material_desc varchar2(4000)
);

create table material_recipe (
material_id number,
recipe_id   number
);

--Existent materials
insert into material (material_desc) values ('apple');
insert into material (material_desc) values ('sugar');
insert into material (material_desc) values ('cinamon');
insert into material (material_desc) values ('pie_crust');

--New material
insert into material (material_desc) values ('apple_pie'); --id 5    
insert into material_recipe values (5, 1);
insert into material_recipe values (5, 2);
insert into material_recipe values (5, 3);
insert into material_recipe values (5, 4);

commit;