以前和同事讨论过,总的来说有两种数据模型的设计,一种好像叫离散模型,还有一种叫不出名字。说的不清楚看例子吧,现有对象人(People),一个人拥有多辆自行车(Bike),有两种类型的设计:
离散型:人和自行车完全分离,仅通过自行车的PeopleID关联
public class People
{
public string ID;
public string Name;
public string Address;
}
public class Bike
{
public string ID;
public string PeopleID;
public string Num;
}
另外一种类型:人中包含一个自行车列表,或者自行车中包含一个人的对象,或者两种都包含
public class People
{
public string ID;
public string Name;
public string Address;
public List <Bike> BikeList;
}
public class Bike
{
public string ID;
public string PeopleID;
public string Num;
public People people;
}
这两种模式应该在网上产生过激烈的讨论,可是我一篇文章都搜不到(可能是关键字不对),望高手们贴几个链接出来,谢过先。
离散型:人和自行车完全分离,仅通过自行车的PeopleID关联
public class People
{
public string ID;
public string Name;
public string Address;
}
public class Bike
{
public string ID;
public string PeopleID;
public string Num;
}
另外一种类型:人中包含一个自行车列表,或者自行车中包含一个人的对象,或者两种都包含
public class People
{
public string ID;
public string Name;
public string Address;
public List <Bike> BikeList;
}
public class Bike
{
public string ID;
public string PeopleID;
public string Num;
public People people;
}
这两种模式应该在网上产生过激烈的讨论,可是我一篇文章都搜不到(可能是关键字不对),望高手们贴几个链接出来,谢过先。
这两种设计都是对象的设计,当然用NHibernate或IBatisNet都可以很好的实现。
这两种设计各有优缺点,据说第一种设计适合实体类和操作类分离,第二种适合实体类和操作类写在同一个类中。希望能找到以前相关讨论的帖子。
第一种设计,对于“纯粹的”ORM来说很别扭,呵呵,我觉得第二种应该更别扭吧,望详细说明。
意思是说你赞成第二种设计?
你可以看看这里的讨论:
http://www.javaeye.com/topic/210993
http://www.javaeye.com/topic/11712你再仔细回味一下,有没有觉得第二种设计更OO?