我正在开发的一个C#程序需要将数据导出到一个或多个数据表。这些表的一些列将相互关联,使得一个表的ID列可以被另一个表的单元格引用。这似乎是设置DataRelation的常见情况。但我正在尝试理解这些关系是如何在以后实际使用的。
我对关系数据库有一点经验,但不是很多。我理解SQL查询和像LEFT join,right join之类的东西。我在Access中做过一些工作,用GUI和手工创建查询。但我从未在数据库本身中创建过任何关系。我一分钟前在Access中尝试过。在创建关系之后,我尝试将我的两个测试表添加到查询中,连接被自动创建。
但是,当我实际查看实际的SQL时,它确实包含了一个从关系派生而来的连接命令。但这也意味着查询根本不依赖于关系。在没有像Access这样的拖放式查询编辑器的数据库中,如何使用关系?
我想要在数据库中创建关系或在DataSet中创建DataRelation的唯一原因是不是为了暗示应该存在什么关系,而不一定强制它们?
发布于 2009-08-26 01:04:43
DataRelations用于:
具有引用父行或子行的表达式的DataRow[] orderRows = customerRow.GetChildRows("Customers_Orders");
OrderTotalColumn.Expression = "Sum(Child(Orders_OrderDetails).Quantity * Child(Orders_OrderDetails).UnitPrice)";
DataRelations也可用于Windows Forms绑定系统
发布于 2009-08-26 00:54:40
实际上恰恰相反。设置表之间的关系有助于强制执行这些表。如果设置外键关系并尝试将数据插入到表中,并且不包括外键,则数据库将停止您的操作。
当你建立关系时,许多数据库也有级联的更新和删除。当您更新/删除父关系时,它们将自动更新和/或删除子关系。
DataRelation的工作原理与此类似,因为它有助于在代码级别强制执行关系……
下面是一些数据库设计基础知识的链接:http://www.sqlteam.com/article/database-design-and-modeling-fundamentals。#4、5、6和7谈论关系。
这里有另一个关于http://www.deeptraining.com/litwin/dbdesign/FundamentalsOfRelationalDatabaseDesign.aspx的更多信息
以下是在使用DataSet时如何在代码中使用DataRelation来帮助处理父/子关系的教程:
http://www.dotnetjohn.com/articles.aspx?articleid=63
下面是DataRelation的MSDN:http://msdn.microsoft.com/en-us/library/system.data.datarelation(VS.80).aspx
发布于 2009-08-26 19:56:12
有时,如果两个表具有相同的名称(ID),则查询设计器中的Access会自动将这两个表的字段联接在一起,即使您尚未创建关系。
https://stackoverflow.com/questions/1331809
复制相似问题