Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql ORM建模-实体类型与值类型_Mysql_Orm_Entity_Object Role Modeling - Fatal编程技术网

Mysql ORM建模-实体类型与值类型

Mysql ORM建模-实体类型与值类型,mysql,orm,entity,object-role-modeling,Mysql,Orm,Entity,Object Role Modeling,我是ORM建模新手,有一个简单的问题 比如说,我想要一个电影的列表,它们的名字,发行日期和类型。这里,电影由值类型“name”表示。但我应该使用“发布日期”和“类型”作为实体类型还是值类型?我见过使用不同方法的不同ORM模型。选择其中一个而不是另一个的原因是什么?电影标题会在电影重拍中重复使用。但是,可以说从来不会在同一年,因此标题和制作年份(或发行年份?请确保您指定!)应该足以唯一地标识特定的电影制作。就我个人而言,我喜欢《意大利的工作(1969)》,而不是2003年的翻拍,那部电影确实很糟糕

我是ORM建模新手,有一个简单的问题


比如说,我想要一个电影的列表,它们的名字,发行日期和类型。这里,电影由值类型“name”表示。但我应该使用“发布日期”和“类型”作为实体类型还是值类型?我见过使用不同方法的不同ORM模型。选择其中一个而不是另一个的原因是什么?

电影标题会在电影重拍中重复使用。但是,可以说从来不会在同一年,因此标题和制作年份(或发行年份?请确保您指定!)应该足以唯一地标识特定的电影制作。就我个人而言,我喜欢《意大利的工作(1969)》,而不是2003年的翻拍,那部电影确实很糟糕

标题只是一个值——一段文字。另一方面,年份是一种实体类型,由年份号标识。你可以通过询问穆斯林或中国人现在是哪一年来验证这一点——他们都有自己的时代,而不是基于共同的时代。不同的数字,同一年。所以数字和年份不一样

更糟糕的是:他们的年龄也不会在12月31日结束,但现在我们可以忽略这一点。此外,一个天文(恒星)年有366.25天,而不是365.25天,因为这是我们环绕天空的速率。一个额外的旋转“解开”围绕太阳的一个轨道。因此,弄清楚你的价值观意味着什么非常重要

使用此逻辑,日期是实体类型,而不是值类型。碰巧我们的数据库对日期有“值”支持,这就是为什么它们还提供函数来拆分日期等。但是日期是一种实体类型,而不是值类型。但是,如果您的工具使它太不方便,您可能会决定忽略它

体裁也是如此。不同的人可能对同一类型有不同的名字;一种体裁不一定由它的名字来唯一识别。因此,您有实体类型流派,由值类型GenreName标识。你认为就你的目的而言,每种类型都有一个确切的(而且只有一个)名称;但实体的使用承认了不同标识符被优先使用的可能性。流派与流派名称不同


我希望这能为您提供一个清晰的理由。

我认为通过查看模型的目的和您正在建模的领域,可以更好地回答这个问题。在很多情况下,我会说将年份作为一个值类型进行建模是非常合适的,比如在说明电影制作的时间时,因为在这种情况下,您只对公历年的值感兴趣。在这里使用实体会使模型混乱。任何东西都可以建模为实体:向法国人询问电影片名也会得到与向美国人询问不同的答案,因为片名会被翻译,如果你想建模,你也应该使用实体类型。Mathias,你熟悉ORM吗?“使用实体使模型混乱”在ER图中是正确的,但在对象角色模型(ORM)图中不是。无论哪种方式,您都会得到相同数量的框-包含年份的虚线框,或包含年份(.Nr)的实心框。后者更明确。对我来说,概念上更简单。在这种情况下,您会让我疑惑:使用实体年(.nr)是否比渴望有优势?为什么PhoneNr值优先于实体Phone(.nr),而Car(.regNr)优先于CarRegNr值(这些值在中是这样建模的)?这不仅仅取决于模型的目的和领域吗?电话公司的订阅模式不需要实体电话(.nr),或者国际电影数据库不需要实体名称吗?电话(手机)是通过其IMEI识别的,而不是通过其可能不时接听的号码识别的。车辆识别号(VIN)识别车辆,而注册号(RegNr)的适用范围较窄(同一辆车以后可能会使用新的注册号)。但所有这些都是次要的主要问题:值类型具有可以写入的值。我不能写一年,但我能写一份思念。因此,一年不是一种价值类型,而渴望是一种价值类型。我不会写一个人,但我可以写他们的名字。一个非常简单的标准,真的。这也是Halpin博士(我经常与他讨论)建模的方式。