如何组织sqlite数据库

时间:2012-01-28 17:55:16

标签: android database sqlite

这更像是一个理论问题而不是其他问题。我正在编写一个使用预打包数据库的Android应用程序。该应用程序的目的仅在于搜索此数据库并返回值。我提供一些抽象的例子来说明我的实施和困惑。用户可以搜索:“Thing Name”,我想要返回给用户的是值a,b和c。我最初设计数据库使其全部包含在单个工作表中,并且第1列为key_index,第2列为name,第3列为a等等。当用户搜索时,光标将返回key_index,然后使用拉取值ab和c。

但是,在我的数据库中“Thing alpha”可以有一个值a = 4或a = 6.我不想在数据库中重复数据,即有多行具有相同的alpha,只有单独的“a”值。那么在这种情况下组织数据的最佳方法是什么?我是否将所有“Thing Names”保存在一张表中,并将所有数据分开保存。这实际上是一个正确的数据库设计问题,这对我来说绝对是个陌生的东西。谢谢你的帮助!

2 个答案:

答案 0 :(得分:1)

有一种称为数据库规范化http://en.wikipedia.org/wiki/Database_normalization的东西。您通常希望使用具有代理键和外键等的相应设计来避免数据库实体中的冗余和依赖性。你的“事物aplpha”看起来像你想拥有一个多对多表,例如一首或多首歌曲属于相同或不同的流派。您可能希望创建字典表来保存您的id,名称对并使用引用这些表的外键。在您的情况下,它将主要是一个只读数据库,因此您可能要考虑创建具有高FILLFACTOR百分比的索引,但不要认为sqlite允许它执行此操作。设计数据库的方法有很多种。一切都取决于DB的目的。你可以从你的硬件设计开始,比如raid /文件系统/ db块大小,以匹配F-System的块大小,以保持I / O最佳,以及在哪里放置表空间/文件组/索引来平衡i / o加载。整个数据库设计理论/任务实际上是一个深层主题,在stackoverflow的答案中不容小觑,也不是几句话的问题。 :)

答案 1 :(得分:0)

在不了解您的数据的情况下,这里是我对您所寻找的内容的猜测。

table: product
- _id
- name

table: attribute
- product_id
- a