关系数据库计算器

这是一个与关系数据库设计有关的计算器,可以计算clousure of set of functional dependencies,canonical cover之类的东西。也可以对schema进行一些normalization。或许对学习和使用关系数据库的人有点启发作用吧?以下截图显示,输入三个functional dependencies:branch-name -> assets branch-city,loan-number -> amount branch-name 和customer-name -> customer-name(表示customer-name没有什么functional dependency),该计算器把目标schema {branch-name ,assets ,branch-city ,loan-number ,amount ,customer-name}分解成了Boyce-Codd normal form:{branch-name ,assets ,branch-city},{loan-number ,customer-name}和{branch-name ,loan-number ,amount}。
关系数据库计算器_第1张图片
说明:
1.算法部分是4年前用Standard C++写的,那时候初学编程,写的很烂,所以虽然附带源码,但是切勿观看。以前有一个MFC的UI,后来不能用了(估计是中了传说中的dll hell的招了),现在的界面是WinForm的,由于难以启齿的原因,也极烂。
2.有些算法是的复杂性是指数增长的,因为完全是在用暴力穷举,好像这是没办法的事情,因为有些逻辑问题就是NP-complete的,我要是弄个P的算法出来,乖乖,我就出名了。所以,使用本程序的时候请注意芯片散热,请先加水,然后启动。
3.目前这个程序只支持不超过32个attributes的schema,因为用了unsigned int的bit vector来表示集合,考虑到前述的指数复杂性问题,attributes多了也算不了。
4.此程序不提供客户服务,因为数据库4年没摸,已经忘得一干二净了(只记得有个术语叫foreign key,好像是给外国人进入数据库用的?)。等过几天学习逻辑再好好研究一下relational algebra吧。
http://files.cnblogs.com/yushih/RDbDesign.zip


你可能感兴趣的:(数据库)