mysql 长整型_【201005】做个搜索引擎(2)——MySQL数据库设计

介绍

介绍

昨天我们已经设计好了搜索引擎的模型,搜索引擎包括两个基本模型即:网站和网页。那么接下来我们就要针对这两个模型进行数据库的设计了。

设计数据库要考虑的问题很多,包括数据的大小、字段的数量、读取场景,写入场景等等。

除此之外还要考虑使用什么数据库引擎,因为不同的数据库引擎的特长是不一样的,我们要充分利用它们的这些特长之处,来将我们的项目的效率调整到最优状态。

这个搜索引擎福哥会使用两个数据库引擎,即:MySQL和ElasticSearch。因为存储数据来讲我们学过的数据库引擎里MySQL是最佳选择,而论查询功能,尤其是全文查询功能,自然是非ElasticSearch不可了。

MySQL数据库设计

数据库名称,福哥写的是“tfse”,即:tongfu search engine,大家可以根据自己的喜好取名。数据库的编码福哥使用的是主流的UTF-8编码。

create database tfse default charset utf8;

选择数据库“tfse”,将当前数据库切换为“tfse”。

use tfse;
9e8b5872aa94b89a4e1b20d64c32d88f.png

MySQL数据表设计

网站信息表

网站信息这个数据表名称福哥取名“websites”。

网站信息的数据表字段,福哥初步规划如下:

  • websiteId,int,auto,primary(自增列)
  • domainName,varchar,unique(网站域名)
  • title,varchar(网站标题)
  • descript,varchar(网站描述)
  • weight,smallint(权重)
  • createDT,datetime(建立时间)
  • lastFetchDT,datetime(最后采集时间)
  • nextFetchDT,datetime(下次采集时间)
create table websites (websiteId int not null auto_increment,domainName varchar(100) not null,title varchar(100) null,descript varchar(500) null,weight smallint not null default 1,createDT datetime not null,lastFetchDT datetime null,nextFetchDT datetime null,primary key (websiteId),unique u_domainName (domainName));
1dd24a484c95984cc9129b3fdaf5b798.png

网页信息表

网页信息这个数据表名称福哥取名“webpages”。

网页信息的数据表字段,福哥初步规划如下:

  • webpageId,int,auto,primary(自增列)
  • url,varchar,unique(网页URL)
  • statusCode,smallint(服务器状态码)
  • charset,tinyint(网页编码,用数字表示,0 - GBK,1 - UTF-8,2 - BIG5,3 - ISO)
  • title,varchar(网页标题)
  • keywords,varchar(网页关键字)
  • description,varchar(网页描述)
  • createDT,datetime(建立时间)
  • lastFetchDT,datetime(最后采集时间)
create table webpages (webpageId int not null auto_increment,url varchar(254) not null,statusCode smallint not null,charset tinyint not null default 1,title varchar(100) null,keywords varchar(300) null,description varchar(500) null,createDT datetime not null,lastFetchDT datetime null,primary key (webpageId),unique u_url (url));
79a46632ed6be52355a8579569f3e585.png

网页数据表

网页数据这个数据表名称福哥取名“webpage_data”。这个表是webpages表的附属表,目的是将网页源代码这样的大型字段从网页信息表分离开。

网页数据的数据表字段,福哥初步规划如下:

  • webpageId,int(关联键,关联webpages.webpageId字段)
  • sourceCode,longtext(网页源代码)
  • pageText,longtext(网页文字,将源代码去掉html标签后的部分)
create table webpage_data (webpageId int not null,sourceCode longtext not null,pageText longtext not null,primary key (webpageId));
0eeb07b1a73f1d464f64f520ced24104.png

名词解释

字段类型

MySQL数据表字段和编程语言一样,是分不同类型的,这里我们把常用的介绍一下

  • int,整型,可存储整型数据
  • char,定长字符类型,可以存储字符串数据
  • varchar,变长字符类型,可以存储字符串数据
  • text,文本类型,可以存储大量的字符串数据
  • tinyint,微整型
  • smallint,小整型
  • longtext,长文本类型

字段索引

MySQL数据表可以利用数据表的索引提高检索速度,或者控制数据表中的数据格式等等

  • primary key,主键,规定为主键的字段是不能有重复数据的,一个数据表只能有一个主键
  • unique,约束,规定为约束的字段也是不能有重复数据的
  • auto,自增列,这个字段比较特殊,在新增数据的时候,这个字段会字段填充数据,其值是在当前数据表中自增列值里最大的那个值加一的值,从而可以保证这个自增列数据唯一

总结

MySQL数据库是关系型数据库,它的特点体现在“关系”两个字上面,我们建立的websites表是网站表,而webpages表则是基于websites表的,然后webpage_data表是webpages表的附属表,从数据表的关系就可以看出模型之间的关系。

而我们在后面进行数据检索的时候,也是要依据这样的关系进行的。

这样的关系型数据库特别适合做基础数据库,将所有模型的数据都依据设计好的关系存储起来,便于我们今后进行管理,分析,统计工作。

https://m.tongfu.net/home/35/blog/512795.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值