2

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

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

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

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

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

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

  1. 一张桌子代表国家,另一张桌子代表每个国家,

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

  3. 还有其他建议吗?

4

3 回答 3

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 );

编辑:错字

于 2013-06-13T18:45:30.940 回答
1

您应该为国家制作 3 表 1,为州制作另一个表格,为详细信息制作另一个表格。

原因:

  1. 这样就不会有冗余数据,它遵循规范化规则。
  2. 您将获得唯一想要的数据。

您可以使用表单提交或 ajax 从表中获取数据。

编辑:

根据 IAM 询问数据库中的数据,因为您将存储州对应的详细信息数据,然后存储国家对应的州,然后您将在每个州的单个列中多次输入国家名称。那么这样的国家和州的数据将在数据库中多次出现,您的数据库会很重。

于 2013-06-13T18:40:05.420 回答
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。但除非您要在区域设置的属性上运行比较索引,否则序列化数据对象应该没问题。)

于 2013-06-15T00:06:11.117 回答