专门做网页设计网站,网络推广的基本手段,找别人做网站需要注意什么,成都优化网站分析MIT6.5830 Lab1-GoDB实验记录#xff08;二#xff09; – WhiteNights Site
标签#xff1a;Golang, 数据库
接下来我们将完成tuple.go的缺失代码#xff0c;并通过tuple_test.go的测试。 实验步骤 观察tuple.go 观察肯定是第一步#xff0c;先打开tuple.go。 快300行代…MIT6.5830 Lab1-GoDB实验记录二 – WhiteNights Site
标签Golang, 数据库
接下来我们将完成tuple.go的缺失代码并通过tuple_test.go的测试。 实验步骤 观察tuple.go 观察肯定是第一步先打开tuple.go。 快300行代码勉勉强强还在接受范围之内。接下来看看我们要做什么首要目的肯定就是通过go test tuple_test.go。 实验步骤 分析数据结构 开头就给出了DBType的定义tuple field那我们暂且把它当作是元组字段–即每一行的每一个数据可以是什么类型的。说白了就是列的域domain是{intstring}。这里限定了存储在数据库中的数据只能是int或者string对应了lab1.md中提到的“Data types except integers and fixed length strings.”。
// DBType is the type of a tuple field, in GoDB, e.g., IntType or StringType
type DBType intconst (IntType DBType iotaStringType DBType iotaUnknownType DBType iota //used internally, during parsing, because sometimes the type is unknown
)var typeNames map[DBType]string map[DBType]string{IntType: int, StringType: string}
如果你不记得iota是啥了这里有一个使用例Golang中的iota。这里还新建了一个map看起来是匹配int和string两种数据类型的。
接下来定义了一个FieldType结构。FieldType字段类型又是什么玩意
// FieldType is the type of a field in a tuple, e.g., its name, table, and [godb.DBType].
// TableQualifier may or may not be an emtpy string, depending on whether the table
// was specified in the query
type FieldType struct {Fname stringTableQualifier stringFtype DBType
}
先别着急。我们可以观察到Ftype的类型是DBType。说明DBType对于FieldType而言是更加底层的方法。
上面的DBType指向的是每一行的数据它限定了每个元组中字段的类型。而FieldType指向的是每一列它限定的是字段所构成的”元组“。举个例子
假设有个table有四列或者说是四个字段
id,name,email,address
如果id限定的类型为int其他三者的类型为string。那么id的域就是{int}相当于FtypeintFname就是“id”那么tableQualifier顾名思义“表限定符”指代的是数据库中的表。我们这里没碰到暂时就不管它。
还剩下最后一段TupelDesc。
// TupleDesc is type of the tuple, e.g., the field names and types
type TupleDesc struct {Fields []FieldType
}
Desc又是什么不知道又是没打注释。DescentDescribe我们回到lab1.md中看看。
Tuples also have a type (or schema), called a tuple descriptor, represented by a TupleDesc struct, which consists of a collection of FieldType objects, one per field in the tuple, each of which describes the type of the corresponding field.
Fieids的类型是FieldType说明TupleDesc要比FieldType更高级它从FieldType继承了它的方法和数据类型。
总结一下TupleDescFieldTypeDBType。而TupleDesc存储着每一列字段的名字类型。
那么接下来就是完成实验一了下篇文章在慢慢记录。