2012-01-28 75 views
0

这比其他任何理论都更像一个理论问题。我正在编写一个使用预打包数据库的Android应用程序。该应用程序的目的仅仅是搜索这个数据库并返回值。我提供了一些抽象的例子来说明我的实施和困境。用户可以通过:“Thing Name”进行搜索,我想要返回给用户的是值a,b和c。我最初设计的数据库包含在一张纸上,第1列是key_index,第2列是名称,第3列是a等等。当用户搜索时,游标将返回key_index,然后使用那拉值ab和c。如何组织sqlite数据库

但是,在我的数据库中,“事物阿尔法”可以具有a = 4或a = 6的值。我不想在数据库中重复数据,即具有多个具有相同事物阿尔法的行,只有单独的“a “价值观。那么在这种情况下组织数据的最佳方式是什么?我是否将所有“物品名称”放在一张纸上,并将所有数据分开存放。这确实是一个正确的数据库设计问题,这对我来说绝对是一种外来的东西。谢谢你的帮助!

回答

0

不理解您的数据更好这里是我的猜测,你在找什么。

table: product 
- _id 
- name 

table: attribute 
- product_id 
- a 
1

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