问题描述
||
例如数据,如果我将数据分类为3组:景点,城市地标,公园
id title content address category
1 GeneralPark xxxxxxxxxxx 1234road Park
2 GreatMuseum wwwwwwwwww 9877road Attraction
看通用公园。它的类别是Park。并且在“吸引力”类别中也是如此。问题是..我如何设计数据库?是否可以这样做(将“停车”和“吸引力”放在同一列中):
id title content address category
1 GeneralPark xxxxxxxxxxx 1234road Park,Attraction
所以,如果不是,那我该如何设计数据库?我应如何实施此行以按类别检索数据;即通过吸引力
public Cursor getplaces()
{
Cursor c = mDb.query(Constants.TABLE_NAME_PLACE,null,null);
return c;
}
预期结果应仅显示吸引力类别:
id title content address category
1 GeneralPark xxxxxxxxxxx 1234road Attraction
2 GreatMuseum wwwwwwwwww 9877road Attraction
4 Middlehigh-school ttttttttt 555road Attraction
5 ShoppingMall ssssssssss 666road Attraction
非常感谢你的帮助。我对开发很陌生。谢谢
解决方法
不要将两件事(即\'Park,Attraction \')放在一栏中,这几乎总是一个错误。解决这种情况的通常方法是添加另一个包含两列的表:
create table place_categories (
place_id int not null references place(id),category varchar(255) not null,primary key (place_id,category)
)
通常,您通常会使用两列主键来避免重复,因此,底部会出现“ 5”约束。在“ 6”上使用外键也是一个好主意,参照完整性可以节省很多痛苦,痛苦和困惑。
然后,如果要使用地点的类别,只需加入place_categories
:
select p.id
from place p
join place_categories c on (p.id = c.place_id)
where c.category = \'Attraction\'
通过这种方法,您的place
表格将如下所示:
create table place (
id int not null primary key,title varchar(100) not null,content varchar(100) not null,address varchar(100) not null
)
数据看起来像这样:
id title content address
1 GeneralPark xxxxxxxxxxx 1234road
2 GreatMuseum wwwwwwwwww 9877road
, 好的,首先,要了解关系数据库和规范化。对您来说,这可能是一件微不足道的事情,但事实并非如此。也许有人可以为您提供解决此问题的代码,但是您从中学不到任何东西。
http://en.wikipedia.org/wiki/Database_normalization
http://en.wikipedia.org/wiki/Relational_database
然后,您将阅读一些SQL以一种智能的方式访问文件。
SQL> \“ SELECT DATE,NAME,ADDRESS FROM People WHERE NAME = \'Jane \'\”的示例