构造一个MCD(merise),其中一个表包含来自另一个表的内容的列

时间:2013-12-02 21:10:59

标签: oracle database-design oracle11g modeling

我在尝试为学校项目制定概念时遇到了问题。我有两个问题。

1 / 是否有可能与oracle做这样的事情:https://mariadb.com/kb/en/dynamic-columns/

2 / 我怎样才能用MCD进行模型化(方法merise)。

感谢

2 个答案:

答案 0 :(得分:1)

从您的链接引用:“它的工作原理是在blob中存储一组列,并使用一小组函数来操作它。”。我没有看到为什么你不能为Oracle(或任何其他关系数据库)编写类似的东西的明显原因。

或者,请查看EAV,这是一种更传统的动态列解决方案。

抱歉,我不熟悉Merise。

答案 1 :(得分:0)

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表示首先分析您的数据模型 并开始考虑之后的技术解决方案。