我正在创建一个应用程序并将SQLite用于数据库,但我从未使用过数据库类 我正在试图弄清楚如何组织以下信息:
用户类:具有名称,两个整数字段和组的列表
组类:具有名称,双重字段和用户列表
用户最终还必须进行某种身份验证 (用户名/密码)字段,但我打算稍后处理。
如果你能帮助我思考如何在SQLite中组织这些信息,那就太棒了。
答案 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-many
和User_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关系。