做一个数据库(大学生如何实现一个数据库)

2024-06-26 06:22:53 19

做一个数据库(大学生如何实现一个数据库)

本文目录

大学生如何实现一个数据库

首先你要理解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多的存储过程?

做一个数据库(大学生如何实现一个数据库)

本文编辑:admin

本文相关文章:


我想做一个数据库,需要什么软件啊?怎样建立一个简单数据库(如何做一个简单的数据库)

我想做一个数据库,需要什么软件啊?怎样建立一个简单数据库(如何做一个简单的数据库)

各位老铁们好,相信很多人对做数据库都不是特别的了解,因此呢,今天就来为大家分享下关于做数据库以及我想做一个数据库,需要什么软件啊的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录我想做一个数据库,需要什么软件啊怎样

2024年7月25日 17:16

更多文章:


powdered sugar(sugar是什么意思)

powdered sugar(sugar是什么意思)

本文目录sugar是什么意思英语中红糖为什么翻成brown sugar(棕糖),有什么文化方面的说法吗4c.Powdered sugar 这句话什么意思奶油 酱油 英文怎么说烘焙中 细砂糖 和霜糖的 用处有什么区别sugar是什么意思sug

2024年7月23日 20:48

htmljscss动态网页设计(初学网页设计,我想问一下,html,css,js,vb,asp,有什么区别,我想学一下动态网页,静态网页我几经基本了解)

htmljscss动态网页设计(初学网页设计,我想问一下,html,css,js,vb,asp,有什么区别,我想学一下动态网页,静态网页我几经基本了解)

本文目录初学网页设计,我想问一下,html,css,js,vb,asp,有什么区别,我想学一下动态网页,静态网页我几经基本了解【高分】求帮写一个把js和css动态插入HTML中的jsHTML JS动态设置CSS样式用HTML+CSS+JS如

2024年6月28日 11:40

in total(in general in common in place和in total的区别)

in total(in general in common in place和in total的区别)

本文目录in general in common in place和in total的区别in total与in all区别in total 与 a total of 的区别total前面用什么介词in general in common

2024年5月17日 03:29

javajre下载(32bit java jre 在哪里下载)

javajre下载(32bit java jre 在哪里下载)

本文目录32bit java jre 在哪里下载关于下载JDK和JRE的问题JAVA虚拟软件JRE6.0+JDK在哪下载java的下载是要下jre+jdk吗,如果我只下了jre怎么办,再去下同版本的jdk吗32bit java jre 在哪

2024年7月18日 07:02

printing press(printing press的意思)

printing press(printing press的意思)

本文目录printing press的意思printing press是什么意思printing press的意思是印刷机的意思:根据柯林斯词典:印刷机A press or a printing press is a machine use

2024年6月4日 18:38

eclipse导入整个项目(eclipse如何导入一个项目!)

eclipse导入整个项目(eclipse如何导入一个项目!)

本文目录eclipse如何导入一个项目!eclipse中怎么正确导入一个项目eclipse怎样导入项目eclipse如何导入一个项目!双击之后打开该软件,如图所示打开后界面如图所示找到菜单栏里的文件-导入,如图所示点击展开General,选

2024年7月5日 15:41

360浏览器安装silverlight(上个星期360杀毒后管家婆就无法登陆了,总提示错误,下载了专用的任我行浏览器也不行,该怎么办啊,)

360浏览器安装silverlight(上个星期360杀毒后管家婆就无法登陆了,总提示错误,下载了专用的任我行浏览器也不行,该怎么办啊,)

本文目录上个星期360杀毒后管家婆就无法登陆了,总提示错误,下载了专用的任我行浏览器也不行,该怎么办啊,360软件管家里面有个microsoft silverlight是什么软件有必要升级吗microsoft silverlight是做什么

2024年5月16日 22:54

安装java时配置环境变量失败(JAVA环境变量失败是什么原因啊)

安装java时配置环境变量失败(JAVA环境变量失败是什么原因啊)

本文目录JAVA环境变量失败是什么原因啊java环境变量设置失败都按照教程安装的,但是就是不行事为什么啊 配置JAVA环境变量总是失败,怎么办win10系统java环境变量设置失败java环境变量怎么设置不成功我的JAVA环境变量配置不成功

2024年7月21日 16:11

api接口用什么语言开发好(API是用什么语言编写的汇编语言属于什么语言)

api接口用什么语言开发好(API是用什么语言编写的汇编语言属于什么语言)

大家好,api接口用什么语言开发好相信很多的网友都不是很明白,包括API是用什么语言编写的汇编语言属于什么语言也是一样,不过没有关系,接下来就来为大家分享关于api接口用什么语言开发好和API是用什么语言编写的汇编语言属于什么语言的一些知识

2024年7月29日 03:31

java语言的类库中提供了一个什么类?java数据库连接文件在哪(java通过配置文件连接数据库)

java语言的类库中提供了一个什么类?java数据库连接文件在哪(java通过配置文件连接数据库)

大家好,java库相信很多的网友都不是很明白,包括java语言的类库中提供了一个什么类也是一样,不过没有关系,接下来就来为大家分享关于java库和java语言的类库中提供了一个什么类的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我

2024年9月5日 00:10

historical怎么读(historical和history中的t发音相同吗)

historical怎么读(historical和history中的t发音相同吗)

本文目录historical和history中的t发音相同吗英语疑问;Historical这个词在英语中读(海斯当瑞扣)那么在美语中怎样读还有foreigner用美语怎么读history怎么读historical怎么读音发音英语历史的英文读

2024年5月15日 14:32

complicated怎么读(错综复杂什么意思错综复杂怎么读)

complicated怎么读(错综复杂什么意思错综复杂怎么读)

大家好,关于complicated怎么读很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于错综复杂什么意思错综复杂怎么读的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所

2024年9月1日 23:30

strlen被0x00截断(c语言中 sizeof(),strlen()各自作用是什么,及其区别根据我的问题补充回答)

strlen被0x00截断(c语言中 sizeof(),strlen()各自作用是什么,及其区别根据我的问题补充回答)

本文目录c语言中 sizeof(),strlen()各自作用是什么,及其区别根据我的问题补充回答C语言strlen的一个问题strlen函数问题php字符截取关于strlen函数*(newstring+strlen(newstring))

2024年6月30日 17:28

龙书浩织梦手机端和电脑端同步(怎样连接手机和电脑同步)

龙书浩织梦手机端和电脑端同步(怎样连接手机和电脑同步)

本文目录怎样连接手机和电脑同步有没有阅读器可以让手机和电脑同步电脑和手机怎么同步手机怎么与电脑同步手机上的办公软件怎么和电脑上的同步手机应用和电脑怎么同步不了怎么办怎样连接手机和电脑同步1、以安卓手机为例,用浏览器打开百度搜索,在搜索框中输

2024年6月25日 05:49

网页制作模板word(word那种模板制作怎么制作)

网页制作模板word(word那种模板制作怎么制作)

本文目录word那种模板制作怎么制作该如何设置和制作word和onenote模板如何制作word模板怎样制作word文档模板word怎么创建模板的两种方法word模版怎么做word那种模板制作怎么制作以Word 2010为例,具体步骤如下:

2024年7月16日 07:54

电泳buffer成分(Tris缓冲液的成分有哪些)

电泳buffer成分(Tris缓冲液的成分有哪些)

各位老铁们好,相信很多人对电泳buffer成分都不是特别的了解,因此呢,今天就来为大家分享下关于电泳buffer成分以及Tris缓冲液的成分有哪些的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录Tris缓冲液的成

2024年8月9日 16:15

booster筋膜枪(筋膜枪哪个牌子好)

booster筋膜枪(筋膜枪哪个牌子好)

本文目录筋膜枪哪个牌子好筋膜枪什么牌子好筋膜枪打不开是什么原因booster筋膜枪充电器正常充电电压多少boostermini筋膜枪能充电但是开不了机筋膜枪哪个牌子好推荐 海博艾斯(HYPERICE)HYPERICE,来自美国的运动康复科技

2024年5月16日 22:55

android系统应用(Android静默安装与静默卸载(系统应用))

android系统应用(Android静默安装与静默卸载(系统应用))

各位老铁们,大家好,今天由我来为大家分享android系统应用,以及Android静默安装与静默卸载(系统应用)的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始

2024年7月17日 03:58

eclipse安装安卓sdk(在Eclipse里面 添加android插件)

eclipse安装安卓sdk(在Eclipse里面 添加android插件)

本文目录在Eclipse里面 添加android插件eclipse怎么安装android sdkEclipse 安装 Android SDK 不成功如何在eclipse中添加android sdk在Eclipse里面 添加android插件

2024年4月8日 07:00

芯片安兔兔跑分(骁龙4gen1跑多少分安兔兔)

芯片安兔兔跑分(骁龙4gen1跑多少分安兔兔)

本篇文章给大家谈谈芯片安兔兔跑分,以及骁龙4gen1跑多少分安兔兔对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本文目录骁龙4gen1跑多少分安兔

2024年9月6日 02:30

近期文章

本站热文

iphone vpn设置(ios设置vpn快捷开关)
2024-07-22 15:01:12 浏览:2334
windows12正式版下载(操作系统Windows Server 2012 R2,在哪能下载到,公司用的)
2024-07-20 17:26:53 浏览:1730
java安装教程(win10如何安装JAVA)
2024-07-19 19:55:49 浏览:1155
client mfc application未响应(每次进cf就提示client MFC Application未响应该怎么办啊!急急急)
2024-07-20 11:15:58 浏览:1152
标签列表

热门搜索