我有一个类,一个包含People
类型对象的数据库。我想实现一个Groups
功能,将某些People
放入某个Groups
。但是,当我从一个组中删除一个人时,我只是希望将该人从组中删除,而不是完全删除。
无论如何,SQLite将Person
的“副本”提供给类,如虚拟,当你删除它时,它不会从整个应用程序中删除,只是从组中删除?
或者我应该以完全不同的方式实现这一点。例如,我提出的一个想法如下:有很多People
这就是为什么我使用数据库但是不会有很多Groups
所以也许我可以使用ArrayList
1 {} ArrayList
s。也就是说,有一个groups
的arraylist,每个group
都有People
的arraylist属于该组。这样,您可以随意删除arraylist中的条目。
答案 0 :(得分:1)
我的建议是在桌面上包含所有People
对象类型。添加一列以表示他们属于哪个组(例如,将列命名为GroupNumber
)。如果您需要将其从群组中删除,只需根据需要清除GroupNumber
列。这样,您可以从组中删除它们,但不从数据库中删除它们。
答案 1 :(得分:0)
您还有另一种选择,允许同一个人可能属于不同的群组。
SQLite有VIEW
和TRIGGER ... INSTEAD OF DELETE
,这可能对您有用。
想象一下这个架构:
CREATE TABLE People(pid, Name);
CREATE TABLE Groups(gid, Name);
CREATE TABLE PeopleGroup(gid, pid);
CREATE VIEW PeopleInGroups
SELECT People.*, Groups.* FROM People
JOIN PeopleGroups ON PeopleGroups.pid=People.pid
JOIN Groups ON PeopleGroups.gid=Group.gid;
CREATE TRIGGER pigd INSTEAD OF DELETE ON PeopleInGroups BEGIN
DELETE FROM PeopleGroup WHERE pid=OLD.pid AND gid=OLD.gid;
END;
当你这样做时
SELECT * FROM PeopleInGroups;
您将获得所有分配了小组的人。
然后你也可以
DELETE FROM PeopleInGroups WHERE pid=123;
将执行触发器并简单地从所有组中删除此人。