Database design UML类属性基数:至少有一个,但不是没有
我有一个类,它存储了一些来自照片EXIF的必需数据。要求中有以下选项: 我需要Database design UML类属性基数:至少有一个,但不是没有,database-design,xsd,uml,Database Design,Xsd,Uml,我有一个类,它存储了一些来自照片EXIF的必需数据。要求中有以下选项: 我需要聚焦35mm胶片 或(FocalLength和focalPlaneResolution和focalPlaneResolution) 它将对应于SQL语句: create table Photo( /* Whatever */ FocalLengthIn35mmFilm FLOAT null, FocalLength FLOAT null, FocalPlaneXResolution FLOAT null
聚焦35mm胶片
或(FocalLength
和focalPlaneResolution
和focalPlaneResolution
)
它将对应于SQL语句:
create table Photo(
/* Whatever */
FocalLengthIn35mmFilm FLOAT null,
FocalLength FLOAT null,
FocalPlaneXResolution FLOAT null,
FocalPlaneYResolution FLOAT null,
constraint AtLeastOneFocal CHECK (
FocalLengthIn35mmFilm is not null OR (
FocalLength is not null AND
FocalPlaneXResolution is not null AND
FocalPlaneYResolution is not null
)
)
)
xsd模式类似于
我会定义/绘制相应的UML模式,但我不知道如何对这个“基数选项”建模。有什么想法吗?您只需包含如下约束: 注:
- 您宁愿使用
或类似值,使其成为布尔表达式。我只是复制了你的SQL语法!=Null
- 我没有包括所有属性
- 约束也可以写在OCL中,这使得它更正式(对于坚持这样做的人)。然而,我的OCL仍然不是那么流利,我可以写得很好
context Photo inv :
(
self.FocalLengthIn35mmFilm->notEmpty()
or (
self.FocalLenght->notEmpty() and
self.FocalPlaneXResolution->notEmpty() and
self.FocalPlaneYResolution->notEmpty()
)
)