我正在为即将到来的考试进行训练,刚刚完成了这个(简单的)练习。
我只想确保我正确地实现了所有内容,特别是重数为1和0的组合。*
我的答案是:
CREATE TABLE exam.A(
idA integer,
b text NOT NULL,
c float DEFAULT -1.0 CONSTRAINT negative_c CHECK (c < 0.0),
PRIMARY KEY(idA));
CREATE TABLE exam.B(
idB integer,
c integer,
PRIMARY KEY(idB));
CREATE TABLE exam.RelationAandB(
idA integer NOT NULL ON DELETE CASCADE,
idB integer,
b integer,
c text,
FOREIGN KEY (idA) REFERENCES exam.A(idA),
FOREIGN KEY (idB) REFERENCES exam.B(idB),
PRIMARY KEY (idA, idB));
发布于 2018-06-07 15:00:03
您的SQL代码非常好,但我看到了以下问题:
idB integer FOREIGN KEY REFERENCES exam.RelationAandB CASCADE DELETE,
从idB到RelationAandB添加相应的外键声明
关于组合是否意味着组合及其组件之间的生命周期依赖的问题,我们必须区分三个抽象级别: 1)纯概念(哲学)级别,这应该是数据建模师的常识;2) UML语义,通常没有精确定义;3)代码级别(例如SQL)。在概念层面上,应该清楚的是,存在具有和不具有这种生命周期依赖关系的组合,因此存在组合本身并不意味着存在生命周期依赖关系。
不幸的是,UML没有定义如何声明一个组合具有存在依赖的组件的任何方法。在我的SO answer Aggregation versus Composition中,我建议对这样的组合使用“不可分”的构造型。
https://stackoverflow.com/questions/50724759
复制相似问题