【问题标题】:Getting started with SQLite (Android)SQLite 入门 (Android)
【发布时间】:2010-06-03 20:56:05
【问题描述】:

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

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

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

谢谢, 抢!

附:抱歉,如果我对该主题缺乏了解导致我发布了重复的问题。

【问题讨论】:

  • _id 只是条目的唯一 ID 号,它在某些情况下不是必需的,但在其他情况下是必需的,因此应始终包括在内。它还有助于跟踪条目,因为其他字段可能重复,但 ID 号不会重复

标签: android sqlite


【解决方案1】:

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

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

一种展示你的具体例子的方法:

路由表:id、名称

停止表:id、名称

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

【讨论】:

    【解决方案2】:

    你问了两个问题:

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

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

    我的第一个猜测是:

    公交路线有公交名称、编号和其他信息:“#1 Red”、“South And West”、“SF Muni”、“map://...”

    站点具有唯一的名称和其他信息:“North Grand Mall”。 “南”、“樱花下,大道以西。”

    跑步有一个路线号、一周中的几天、一个方向,可能是当天在该方向上运行的序列号,也可能是跑步的开始/停止时间:“63(#1 Red 的 route_id) "、"反向"、"MTWRF"(工作日)、"2"(第二次运行)、"7:00"、"7:36"。

    然后你有一个“Run_id”、“Stop_id”、“Stop Sequence Number”、“Time”的调度表。

    写出您计划的架构,然后开始尝试针对它们编写架构。不要对几个多重连接感到惊讶“SELECT * from 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 = (requested bus) and S.time >= now() and ...." 你在它工作之后去规范化性能。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-20
      • 1970-01-01
      相关资源
      最近更新 更多