做一个数据库(大学生如何实现一个数据库)
本文目录
- 大学生如何实现一个数据库
- 做一个数据库,应该从那里下手
- 怎么做数据库呀
- 如何用java做一个数据库
- 怎么用JAVA做一个数据库,要代码的!
- 想做一个数据库管理系统,可是该从何下手都不知道
- 我想做一个数据库,需要什么软件啊
- 用sql2000查询分析器做一个数据库实例
大学生如何实现一个数据库
首先你要理解SQL并写一个SQL的编译器。本来tokenizer和parser两部分就可以够程序员撕逼了,你还需要写一个你不知道文法(别看了,那书里绝对没有文法)的编译器。这块如果你没学过编译原理,我很好奇你需要怎么实现,甚至怎么寻找或设计文法到实现编译器的前端。
第二,你需要了解关系模型,并实现关系模型的存储。你需要对数据结构,其中最核心的是B+树索引和Hash索引,重点是实现他们在磁盘上的版本。由于磁盘的存储方式和内存不一样,你需要针对磁盘的存储进行特殊的处理。
第三,你需要实现查询引擎。查询引擎的原理是将SQL转换成一系列关系代数操作符组成的操作树。之前你已经实现了这个查询引擎,也就是SQL编译器的前端。现在你需要理解关系代数,并实现关系代数操作符。并实现一个类似于解释器,或者叫调度器的工具,将关系操作树给依次执行。其中关系代数操作符里最麻烦的就是join操作,因为join操作有好几种join算法。如果需要的话,你还需要实现查询优化引擎。查询优化引擎姑且算是一个抽象的黑盒子,里面需要用到一些启发式的高级算法,需要你对动态规划和树遍历等等算法有了解。同时在cost estimation的部分需要从历史数据中估算cost,往大了说还是统计学和机器学习呢。
第四,你需要实现事务和恢复(回滚)机制,这是数据库最重要的功能之一。事务的话需要各种锁的机制实现,而回滚需要有完善的日志系统。这两部分需要大量的工作量和对操作系统有深入的了解。
第五,你最好还要实现一个api。这就是把socket通信封个包的苦力了。
我很好奇150天中你要各分配给上面的东西多少天。举个例子,阿里一堆“大神”做oceanbase,当然transaction和存储复杂多了,用了四年。今年图灵奖得主michael stonebraker的学生做的voltdb的原型,接近十个人做一年。
我本科并没有实现一个数据库就毕业了。当时也是看着大神们说什么撸一个数据库感到各种膜拜。现在我回过头来反思,一个人撸一个数据库到底是不是一件很有意义的事情,而且也完不成。几个人一起分工各做一部分姑且能勉强完成任务。诚然,如上文所讲,还不完全(我没撸过数据库,所以上面讲的并不能如数家珍),数据库作为一个计算机软件是包含了计算机科学里许多模块的一个十分综合的软件系统。对数据库的学习可以延展到对算法与数据结构,编译器,计算理论,操作系统等等方方面面的学习,是非常好的一件事。同时做一个数据库一定需要对这些多方面的知识有着十分详细的了解才能做到游刃有余。这些绝对不是,也没必要是,一个大学低年级同学应该做到的。甚至不是大部分工程师应该做到的。因为工程师的业务绝大部分人涉及不到这么多方面,尤其是编译器部分。
做一个数据库,应该从那里下手
无论什么数据库,都要从基础的sql语句学起,sql语句是标准的查询语言;主要是分了三种1.数据操作SELECT--从数据库表中检索数据行和列INSERT--向数据库表添加新数据行DELETE--从数据库表中删除数据行UPDATE--更新数据库表中的数据2数据定义CREATETABLE--创建一个数据库表DROPTABLE--从数据库中删除表ALTERTABLE--修改数据库表结构CREATEVIEW--创建一个视图DROPVIEW--从数据库中删除视图CREATEINDEX--为数据库表创建一个索引DROPINDEX--从数据库中删除索引CREATEPROCEDURE--创建一个存储过程DROPPROCEDURE--从数据库中删除存储过程CREATETRIGGER--创建一个触发器DROPTRIGGER--从数据库中删除触发器CREATESCHEMA--向数据库添加一个新模式DROPSCHEMA--从数据库中删除一个模式CREATEDOMAIN--创建一个数据值域ALTERDOMAIN--改变域定义DROPDOMAIN--从数据库中删除一个域3数据控制GRANT--授予用户访问权限DENY--拒绝用户访问REVOKE--解除用户访问权限--事务控制COMMIT--结束当前事务ROLLBACK--中止当前事务SETTRANSACTION--定义当前事务数据访问特征嘿嘿,这些是最基本的。不过学起来也要花的时间的哦。如果做数据库程序的话,这些是必须掌握的,。嘿嘿。,不懂的可以跟我交流啊。。
怎么做数据库呀
在access里面用罗斯文数据库实例建立个或自己建一个:1、启动ACCESS建空数据库,取名“学生管理”。2、建一个表,如果有excel数据可直接导入或在设计视图里面建表,字段名:学号、姓名、性别、出生日期、家庭住址等。取名“学生档案”至于记录,自己输入几个人的情况。3、建一个表取名“学生成绩”,字段名:学号、课程A、课程B、课程C、课程D、课程E。至于记录,自己输入几个人的情况。4、建关联的查询。在查询设计视图中将“学生档案”的学号拖到“学生成绩”的学号字段上。sql语句为:SELECT 学生档案.学号, 学生档案.姓名, AS 总成绩 FROM 学生档案 INNER JOIN 学号 ON 学生档案.学号 = 学生成绩.学号,可以查询学生成绩。5、sql语句为:SELECT 学生档案.学号, 学生档案.姓名, FROM 学生档案 where ((year(now)-year(出生日期)》20 INNER JOIN 学号 ON 学生档案.学号 = 学生成绩.学号6、建一窗体(设计视图)里面建一些说明标签,一些功能按钮:按钮的单击事件调用相应的宏事件(或用VBA代码)调用需要的查询,取名“主窗体”。 一个简单的数据库就建好了。access功能很多,一句两句说不清楚,找本教材看看。
如何用java做一个数据库
你可以把信息存储到一个final修饰的Map中,之后Key是主键Value是数据。不过重启之后数据就会都丢了
怎么用JAVA做一个数据库,要代码的!
你的想法有点可笑不过感觉你的意思是想做个数据库管理功能而已那样你只需要调用数据库提供的底层驱动界面化实现你想要的功能
想做一个数据库管理系统,可是该从何下手都不知道
你是要开发数据库管理系统吗?这是个很复杂的工作,需要了解数据库管理系统的体系结构和运行原理,建议你先看“数据库系统实现(第二版)”这本书,可以参考postgresql这个软件。如果你只会sql的话距离做数据库管理系统还很遥远,或许用数据库管理系统开发一个信息管理系统还是比较实际的工作,有很多书籍都有现成的例子,开发前你要先会一门语言,比如C#
我想做一个数据库,需要什么软件啊
可以用MySQL数据库。
MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理。
MySQL是开放源代码的,因此任何人都可以在GeneralPublicLicense的许可下下载并根据个性化的需要对其进行修改。
MySQL因为其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择。
扩展资料:
MySQL关系型数据库于1998年1月发行第一个版本。它使用系统核心提供的多线程机制提供完全的多线程运行模式,提供了面向C、C、Eiffel、Java、Perl、PHP、Python以及Tcl等编程语言的编程接口(APIs),支持多种字段类型并且提供了完整的操作符支持查询中的SELECT和WHERE操作。
MySQL是开放源代码的,因此任何人都可以在GeneralPublicLicense的许可下下载并根据个性化的需要对其进行修改。MySQL因为其速度、可靠性和适应性而备受关注。
用sql2000查询分析器做一个数据库实例
USE GO/****** Object: Database Script Date: 09/23/2011 09:46:15 ******/CREATE DATABASE ON PRIMARY ( NAME = N’QingHua’, FILENAME = N’C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\QingHua.mdf’ , SIZE = 3072KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ) LOG ON ( NAME = N’QingHua_log’, FILENAME = N’C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\QingHua_log.ldf’ , SIZE = 3072KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)GO以上是创建数据库没明白你说的复杂的数据库是什么概念?复杂的表结构?复杂的约束?N多的触发器?N多的存储过程?
更多文章:
in total(in general in common in place和in total的区别)
2024年5月17日 03:29
javajre下载(32bit java jre 在哪里下载)
2024年7月18日 07:02
printing press(printing press的意思)
2024年6月4日 18:38
eclipse导入整个项目(eclipse如何导入一个项目!)
2024年7月5日 15:41
安装java时配置环境变量失败(JAVA环境变量失败是什么原因啊)
2024年7月21日 16:11
api接口用什么语言开发好(API是用什么语言编写的汇编语言属于什么语言)
2024年7月29日 03:31
java语言的类库中提供了一个什么类?java数据库连接文件在哪(java通过配置文件连接数据库)
2024年9月5日 00:10
historical怎么读(historical和history中的t发音相同吗)
2024年5月15日 14:32
complicated怎么读(错综复杂什么意思错综复杂怎么读)
2024年9月1日 23:30
strlen被0x00截断(c语言中 sizeof(),strlen()各自作用是什么,及其区别根据我的问题补充回答)
2024年6月30日 17:28
android系统应用(Android静默安装与静默卸载(系统应用))
2024年7月17日 03:58
eclipse安装安卓sdk(在Eclipse里面 添加android插件)
2024年4月8日 07:00