我有一个简单的Android应用程序,想知道组织我的数据库表(mysql)的最佳方法。 该应用程序的想法是一个类别列表,然后用户按下其中一个类别,他获得另一个项目列表,当他点击其中一个时,他获得有关它的详细信息。
例如,第一个列表(国家/地区)有(英国,美国,中国,日本和其他国家/地区)
你点击美国,你得到另一个列表(州)(加利福尼亚州,纽约州,亚利桑那州,...)
点击加利福尼亚,你会得到它的详细信息(人口,面积,资本)
如果你点击英国然后点击伦敦就会发生同样的事情......
那么,我应该如何安排我的数据:
国家/地区的一个表格和每个国家/地区的另一个表格
所有州只有一张大表,它会有一栏说明它属于哪个国家。
还有其他任何建议吗?
答案 0 :(得分:1)
您应该为国家/地区设置3表1,为状态设置另一个表格,并为详细信息制作另一个表格。
<强>原因:强>
您可以使用表单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
开始下载。但除非您要在语言环境的属性上运行比较索引,否则序列化数据对象应该没问题。)