首先要感谢一下blogs,从这里学到了不少东西:-)我学.NET不久,程序生涯也就是从.NET开始,想学好它:)
下面就问我的问题,非常的疑惑和不解,希望能得到大家的解答:)THANKS A LOT
数据库设计问题/程序设计问题
关系总感觉理的不是很清楚,打个比方:有两个表 Type和Product,Type表中有两个字段TypeID,TypeName.
Product表中有三个字段ProductID,ProductName,TypeID(为Type表的外键).这样设计两个表我觉得比较合理(关系型嘛).
然后和数据库对应有两个entryClass分别为
public class Type
{
private int _TypeID = 0;
private string _TypeName = string.Empty;
public int TypeID
{
get
{
return _TypeID;
}
set
{
_TypeID = value;
}
}
public string TypeName
{
get
{
return _TypeName;
}
set
{
_TypeName = value;
}
}
}
public class Product
{
private int _ProductID = 0;
private string _ProductName = string.Empty;
private int _TypeID;
public int ProductID
{
get
{
return _ProductID;
}
set
{
_ProductID = value;
}
}
public string ProductName
{
get
{
return _ProductName;
}
set
{
_ProductName = value;
}
}
public int TypeID
{
get
{
return _TypeID;
}
set
{
_TypeID = value;
}
}
//后因为数据显示问题,又在实体里面添了这样一个字段
private string _TypeName; //
public string TypeName //
{ //
get //
{ //
return _TypeName; //
} //
set //
{ //
_TypeName = value; //
} //
} //
//////////////////////////////////////////////
}
对两个表程序中也有相应的GURD,但是在页面显示中总会有多表字段的显示啊,比如:要同时显示TypeName,ProdcutName.那不就要多表查询了吗?
可能会有这样的操作"SELECT * FROM [Type],[Product] WHERE Type.TypeID=Product.TypeID ProductID=***",并且返回的结果就是填充EntryClass,
但是我的问题又来了,EntryClass里面没有这么多字段可以填啦,那我又回去改Product类了...改了,嗯,程序又可以用了:),但是我的心里就是不舒服,越改越
不想写了,这仅仅是打个小的比方,如果是有三个表连表查询呢?(SQL又变长了...)又发现我之前设计的实体类Product的字段不够用了,又要往里面添字段了...
这样下去相信到最后我的程序也不像程序了,如果今后想改的话可能不是那么容易了...程序之间的偶合度好高啊......
后来又想了,改数据库吧,往表里面加冗余字段吧,如在Product里面再加一个TypeName,这样的话我再要读ProductName和TypeName就不用连表查询啦,只要
"SELECT * FROM [Product] WHERE ProductID=***",但是这是两个表,同样如果要有三表连读,四表连读呢???数据库设计有问题了...程序设计有问题了,
我的问题都来了...
苦恼中...大家帮帮忙啊
给点意见...