首页 / C# / c#-DBMS独立查询
c#-DBMS独立查询
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c#-DBMS独立查询,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1456字,纯文字阅读大概需要3分钟。
内容图文
我的硕士论文是关于通过分析元数据和存储的数据来发现不良的数据库设计.为此,我们从给定的DBMS中提取元数据模型,然后对该元数据运行一组规则.
为了通过数据分析扩展此过程,我们需要允许规则直接查询数据库,但是我们必须保持DBMS独立性,以便可以将查询应用于PostgreSQL,MSSQL和MySQL.
我们讨论了一种查询的功能构造,例如:
new Query(new Select(columnID), new From(tableID), new Where(new Equality(columnID1, columnID2)))
然后使用特定于DBMS的序列化器.
另一种方法是让规则自己处理一切:
public Query QueryDatabase(DBMS dbms)
{
if (dbms == PostgreSQL) { return "select count(1) from Users"}
if (dbms == MSSQL) {return ....}
}
我们错过了什么吗?所有这些实际上是否存在于某个地方的漂亮库中?是的,我们已经研究了实体框架,但是它们似乎依赖于数据库的静态类型模型,由于明显的原因,该模型无法创建.
我应该提到的是,我们维护了可扩展的规则体系结构,允许最终用户实施自己的规则.
为了阐明我们要实现的目标,请看下面的查询(mssql),它需要两个参数,表名(@table)和列名(@column):
DECLARE @TotalCount FLOAT;
SELECT @TotalCount = COUNT(1) FROM [@table];
SELECT SUM(pcount * LOG10(@TotalCount / pcount)) / (LOG10(2) * @TotalCount)
FROM (SELECT (Count([@column])) as pcount
FROM [@table]
GROUP BY [@column]) as exp1
该查询通过估计熵来度量存储在给定属性中的信息量.它需要访问表中的所有行.为避免从数据库中提取所有行并通过慢速网络连接进行传输,最好用SQL表示它们,而仅传输单个数字.
注意:我们确实拥有所需的所有元数据.这个问题仅用于访问数据!
我不确定是否要将此问题添加到我已经很长的问题中,编辑现有答案或要做什么.请随时提出建议.
内容总结
以上是互联网集市为您收集整理的c#-DBMS独立查询全部内容,希望文章能够帮你解决c#-DBMS独立查询所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。