关于一对多关系的规范化,我不知道如何在数据库中表示具有指定容量的集合。我可以想出两种方法来表示与B具有一对多关系的实体A:
每一种方式的利弊是什么?有什么标准的方法吗?是否存在性能或维护方面的问题?
发布于 2015-12-22 20:56:42
坦白说,我不这么认为。
选项2可以由于编程错误而造成不一致。
没有“应用程序”这样的东西。单应用程序<->单DB规则现在不适用,因为你可能会在同一个后端有几个前端。
添加触发器以强制执行选项2:
不知道您的RDBMS是什么,但是这是一个伪代码:
create trigger mytrigger before insert on table B for each row
declare
var c integer;
var ca integer;
begin
select count(*) into c from B where id_a = :new.id_a;
select capacity into ca from A where id = :new.id_a;
if c > ca then
RAISE_APPLICATION_ERROR(-20001, 'Cannot Insert mora than '||ca||' rows in this table');
enf if;
end发布于 2015-12-22 20:54:59
至少有两个原因,选择2对我来说是赢家(虽然不确定这是否被认为是“标准”推理):
https://softwareengineering.stackexchange.com/questions/305672
复制相似问题