我是ORM建模的新手,有一个简单的问题。
假设我想要一份电影列表,他们的名字,发行日期和类型。电影在此处由值类型“名称”表示。但是我应该使用“发布日期”和“流派”作为实体类型还是值类型?我已经看到使用不同方法的不同ORM模型。选择一个而不是另一个的原因是什么?
答案 0 :(得分:1)
电影改编中重复使用电影片名。但是,从来没有在同一年,所以标题和制作年份(或发行年份?确保你指定!)应该足以唯一地标识特定的电影作品。我个人喜欢"意大利工作(1969)"不是2003年翻拍,这是非常糟糕的。
标题只是一个值 - 一段文字。另一方面,一年是一个实体类型,由年号标识。您可以通过向穆斯林或中国人询问今年是什么来验证这一点 - 他们都有自己的时代,而不是基于共同时代。不同的数字,同年。所以数字与年份不同。
情况变得更糟:他们的岁月也不会在12月31日结束,但让我们暂时忽略它。此外,天文(恒星)年有366.25天,而不是365.25,因为这是我们绕天空的速度。一次额外的轮换"展开"围绕太阳的一个轨道。因此,明确你的价值观意味着非常重要。
使用此逻辑,Date是实体类型,而不是值类型。只是我们的数据库有"价值"支持日期,这就是为什么它们也提供将它们分开的功能等等。但是Date是实体类型,而不是值类型。如果你的工具太不方便,你可能会决定忽略它。
同样为流派。不同的人可能对同一类型有不同的名字;类型不一定由其名称唯一标识。因此,您拥有实体类型Genre,由值类型GenreName标识。你声称为了你的目的,每个类型都有(并且只有)一个名字;但是实体的使用认识到优选不同标识符的可能性。类型与流派名称不同。
我希望这能给你一个明确的理由。