我在为学校项目构思时遇到了一个问题。我有两个问题。
1/oracle有可能做这样的事情吗:https://mariadb.com/kb/en/dynamic-columns/
2/我如何用MCD(方法分生组织)对此进行建模。
感谢
从您的链接中引用:"它的工作原理是将一组列存储在一个blob中,并有一小组函数来操作它。"。我看不出有什么明显的原因不能为Oracle(或任何其他关系数据库)编写类似的东西。
或者,看看EAV,它是一种更传统的动态列解决方案。
对不起,我不熟悉Merise。
1/Oracle不是为创建动态列而设计的,但您可以通过使用PL/SQL函数(但不能在使用SQL查询时)来实现:
create or replace procedure add_table_column(table_name varchar2, column_name varchar2, column_type varchar2)
is
v_script varchar2(4000);
begin
v_script := 'alter table '||table_name||' add '||column_name||' '||column_type;
execute immediate v_script;
end;
/
你可以这样称呼它:
begin
add_table_column('toto','test','number');
end;
/
2/Merise方法不是为"动态对象"设计的,因为您必须从一个完整的数据字典开始。
您的对象是如何动态的,为什么必须添加列?
您总是可以通过使用"常规"表和关系来获得解决方案。
听起来你应该从分析技术实现开始。MERISE表示,首先分析您的数据模型,然后开始考虑技术解决方案。