SQLite:如何组织我的数据库

时间:2013-06-13 18:31:12

标签: android mysql database organization

我有一个简单的Android应用程序,想知道组织我的数据库表(mysql)的最佳方法。 该应用程序的想法是一个类别列表,然后用户按下其中一个类别,他获得另一个项目列表,当他点击其中一个时,他获得有关它的详细信息。

例如,第一个列表(国家/地区)有(英国,美国,中国,日本和其他国家/地区)

你点击美国,你得到另一个列表(州)(加利福尼亚州,纽约州,亚利桑那州,...)

点击加利福尼亚,你会得到它的详细信息(人口,面积,资本)

如果你点击英国然后点击伦敦就会发生同样的事情......

那么,我应该如何安排我的数据:

  1. 国家/地区的一个表格和每个国家/地区的另一个表格

  2. 所有州只有一张大表,它会有一栏说明它属于哪个国家。

  3. 还有其他任何建议吗?

3 个答案:

答案 0 :(得分:1)

您应该为国家/地区设置3表1,为状态设置另一个表格,并为详细信息制作另一个表格。

<强>原因:

  1. 这样就不会有冗余数据,而是遵循规范化规则。
  2. 您将获得除此之外的唯一数据。
  3. 您可以使用表单submit或ajax从表中获取数据。

    <强>编辑:

    根据IAM的要求,数据库中的数据将存储状态对应的详细信息数据,然后说明对应的国家/地区,然后您将在每个状态的单个列中多次输入国家/地区名称。那么国家和州的数据将在数据库中多次出现,您的数据库将会很繁重。

答案 1 :(得分:1)

尝试类似下面的内容..然后从那里开始..

create table countries (
  id int(11) not null auto_increment,
  name varchar(255) not null,
  primary key (id)
);

create table states ( id int(11) not null auto_increment, name varchar(255) not null, country_id int(11) not null, primary key (id) constraint foreign key (country_id) references countries(id) on delete cascade );

create table properties ( name varchar(255) not null, primary key (name) );

create table state_properties ( id int(11) not null auto_increment, property varchar(255) not null, state_id int(11) not null, primary key(id), constraint foreign key (property) references properties(property) on delete cascade, constraint foreign key (state_id) references states(id) on delete cascade );

编辑:错字

答案 2 :(得分:0)

假设信息存储为JSON或XML blob,您应该有两个表。不是一个或三个。从头开始构建。

CREATE TABLE locale (locID int PRIMARY KEY, data BLOB )

CREATE TABLE localGrouping (
    groupID int PRIMARY KEY,
    groupName varchar(255),
    parentGroup int NULL,
    locID int NULL
)

您提到希望拥有国家/地区列表,然后深入了解城市或州。哪个都找到并且花花公子,但是如果你想在城市上方的州一级包含统计数据会怎样?或者是社区之上的城市级别?

正确的数据库规范化,如任何正确的编程,遵循“零一无限”规则。特别是在分层数据集方面。

(当然,随意添加许多表从LOCALE开始下载。但除非您要在语言环境的属性上运行比较索引,否则序列化数据对象应该没问题。)