CREATE TABLE IF NOT EXISTS Addresses ( id INTEGER PRIMARY KEY, name TEXT UNIQUE NOT NULL, address TEXT NOT NULL, description TEXT DEFAULT "" ); CREATE TABLE IF NOT EXISTS Address_Groups ( id INTEGER PRIMARY KEY, name TEXT UNIQUE NOT NULL, description TEXT DEFAULT "" ); CREATE TABLE IF NOT EXISTS Addr_Groups_Members ( grp_id INTEGER REFERENCES Address_Groups(id), obj_id INTEGER REFERENCES Addresses(id) ); -- insert some addresses and groups INSERT INTO Addresses (name,address) VALUES ("any","any"); INSERT INTO Addresses (name,address) VALUES ("localhost", "127.0.0.1"); INSERT INTO Address_Groups(name) VALUES ("dummy"); -- register a group membership INSERT INTO Addr_Groups_Members VALUES (( SELECT id FROM Address_Groups WHERE Address_Groups.name = "dummy"), (SELECT id FROM Addresses WHERE Addresses.name = "any" )); INSERT INTO Addr_Groups_Members VALUES (( SELECT id FROM Address_Groups WHERE Address_Groups.name = "dummy"), (SELECT id FROM Addresses WHERE Addresses.name = "localhost" )); -- check resulting tables SELECT "Addresses", * FROM Addresses; SELECT "Address Groups",* FROM Address_Groups; SELECT "Group Members",* FROM Addr_Groups_Members;