如何在SQLite中组织此信息?

时间:2016-10-16 05:17:22

标签: android sqlite android-sqlite

我正在创建一个应用程序并将SQLite用于数据库,但我从未使用过数据库类 我正在试图弄清楚如何组织以下信息:

  

用户类:具有名称,两个整数字段和组的列表

     

组类:具有名称,双重字段和用户列表

     

用户最终还必须进行某种身份验证   (用户名/密码)字段,但我打算稍后处理。

如果你能帮助我思考如何在SQLite中组织这些信息,那就太棒了。

4 个答案:

答案 0 :(得分:1)

表可以按如下方式组织,

User_tbl

--------------------------------------------------
_ID     int         primary key
--------------------------------------------------
name    text        name of user
--------------------------------------------------
field1  int         int field 1
--------------------------------------------------
field2  int         int field 2
--------------------------------------------------

Group_tbl

--------------------------------------------------
_ID     int         primary key
--------------------------------------------------
name    text        name of group
--------------------------------------------------
field   double      double field
--------------------------------------------------

根据@ cricket_007s的答案,您需要另一个链接这两个字段的表,

User_groups_tbl

--------------------------------------------------
_ID         int         primary key
--------------------------------------------------
user_id     int         _ID value from User_tbl
--------------------------------------------------
group_id    int         _ID value from Group_tbl
--------------------------------------------------

INNER JOIN查询,例如

SELECT User_tbl._ID, User_tbl.name, Group_tbl._ID, Group_tbl.name, User_groups_tbl.user_id, User_groups_tbl.group_id
FROM User_tbl, Group_tbl, User_groups_tbl
INNER JOIN User_tbl.User_tbl._ID ON User_groups_tbl.User_groups_tbl.user_id
INNER JOIN Group_tbl.Group_tbl._ID ON User_groups_tbl.User_groups_tbl.group_id
WHERE User_groups_tbl.user_id = user_id;

将产生用户所在的所有组。

同样是INNER JOIN查询,例如

SELECT User_tbl._ID, User_tbl.name, Group_tbl._ID, Group_tbl.name, User_groups_tbl.user_id, User_groups_tbl.group_id
FROM User_tbl, Group_tbl, User_groups_tbl
INNER JOIN User_tbl.User_tbl._ID ON User_groups_tbl.User_groups_tbl.user_id
INNER JOIN Group_tbl.Group_tbl._ID ON User_groups_tbl.User_groups_tbl.group_id
WHERE User_groups_tbl.group_id = group_id;

将产生一个组中的所有用户。

User_groups_tbl的解释

此表用于存储两个表many-to-manyUser_tbl之间的Group_tbl关系。将用户添加到新组或反之后,添加一个条目,其中包含相应组的_ID和此表中相应用户的_ID

答案 1 :(得分:1)

据我了解,这两个表形成了许多关系。所以,一个好的"数据库设计将有3个表。

表1(用户):user_ID(主键),name,field_1,field_2

表2(组):group_ID(主键),name,double_Field

表3(关系):user_ID(外键),group_ID(外键)。

答案 2 :(得分:0)

如果我正确理解了这个问题,您需要处理用户和群组之间的many-many关系。使用SQLite很难处理这种关系。 我建议您使用android ORM,例如Realm Android,它比sqlite更快,非常适合您的需要。对于许多人的关系,请将模型设为https://realm.io/docs/java/latest/#many-to-many

答案 3 :(得分:0)

你可以去Codecademy并参加SQL课程。或者您可以使用Realm或Cupboard或ActiveAndroid(有几个库来简化SQLite开发)。而且,除非您熟悉编写SQL代码,否则最好使用其中一种。

基本上,您将拥有一个User表,Group表,然后是UserGroup查找表(2列),其中列出了哪些用户ID属于哪个组ID的ID值。

这可以被视为many-to-many关系。