SQLite入门(Android)

时间:2010-06-03 20:56:05

标签: android sqlite

我的SQL背景有限,基本上是通过HTML进行少量操作,而且主要是使用预先存在的数据库。我要做的是建立一个数据库,用于存储公交路线的时间信息。所以基本上我有不同的路线,每条路线都有停靠点,然后是每个站点的公交车到达时间列表。以下是其网站上的时间表示例:Link

我想知道布局数据库/表格的最佳方法是什么?

每个表中_id字段的用途是什么?

谢谢, 罗布!

P.S。对不起,如果我对这个问题缺乏了解,我就会发一个重复的问题。

2 个答案:

答案 0 :(得分:2)

id字段为每一行提供唯一的id,可以由数据库中的其他表引用。当以这种方式引用它时,它被称为外键。这允许您有一个表格,其中包含有关说出学生(姓名,地址等)的详细信息,然后在另一个谈论班级成员的表格中唯一地引用该学生。

通常有许多不同的方法来布局数据库,这最好取决于您想要对数据做什么。大部分设计并不是SqlLite独有的,因此一般来说阅读关系数据库可能是值得的。

说明你的具体例子的一种方法:

路由表:id,name

停止表:id,name

时间表:id,路由的外键,停止的外键

答案 1 :(得分:1)

你问了两个问题:

  1. 'id'字段作为唯一的行标识是一个很好的约定。它不是严格要求的,并且某些具有每行唯一序列号的数据将使用该序列号。程序通常希望通过唯一行标识查找整个记录,因此该字段应该是主键。创建id的常用子句是“id INT NOT NULL AUTO_INCREMENT,PRIMARY KEY(id)”。每当您添加新记录时,都会自动分配唯一ID。有关详细信息,请参阅Tizag's MySQL Tutorial。就个人而言,有些人将这些名称命名为“_id”,例如“route_id”,“bus_id”,以及您的风格可能会有所不同。

  2. 布置您的数据取决于您想要用它做什么。我的猜测是,对于每条公交线路,您希望在一段时间后在特定站点找到下一班车,然后当该公共汽车到达下一站时。每条路线都有很多站点;可以在路线之间共享停靠点;一条路线在白天因跳过一些站点而变化;路线往两个方向;我会添加一个“运行”的抽象,其中一辆公共汽车从头到尾贯穿停靠点。

  3. 我的第一个猜测是:

    巴士路线有公交车名称,号码和其他信息:“#1 Red”,“South And West”,“SF Muni”,“map:// ......”

    止损有一个独特的名称和其他信息:“North Grand Mall”。 “南方”,“樱花下,大道以西。”

    跑步有一个路线编号,一周中的几天,一个方向,也许是当天那个方向的跑步序列号,也许是跑步的开始/停止时间:“63(#1红色的route_id) “,”反方向“,”MTWRF“(工作日),”2“(第2次运行),”7:00“,”7:36“。

    然后你有一个“Run_id”,“Stop_id”,“Stop Sequence Number”,“Time”的日程表。

    写出您计划的架构,然后开始尝试针对它们编写架构。不要惊讶于几个多个连接“SELECT *从Schedule as S,Run as R,Bus as B for B ... WHERE B.id == R.bus_id and S.run_id == R.id and B .id =(请求的总线)和S.time> = now()和....“你在工作后对性能进行了非规范化。

    这是我所有的免费建议。 :)