CREATE TABLE principals ( id SERIAL NOT NULL, uri VARCHAR(200) NOT NULL, email VARCHAR(80), displayname VARCHAR(80) ); ALTER TABLE ONLY principals ADD CONSTRAINT principals_pkey PRIMARY KEY (id); CREATE UNIQUE INDEX principals_ukey ON principals USING btree (uri); CREATE TABLE groupmembers ( id SERIAL NOT NULL, principal_id INTEGER NOT NULL, member_id INTEGER NOT NULL ); ALTER TABLE ONLY groupmembers ADD CONSTRAINT groupmembers_pkey PRIMARY KEY (id); CREATE UNIQUE INDEX groupmembers_ukey ON groupmembers USING btree (principal_id, member_id); ALTER TABLE ONLY groupmembers ADD CONSTRAINT groupmembers_principal_id_fkey FOREIGN KEY (principal_id) REFERENCES principals(id) ON DELETE CASCADE; ALTER TABLE ONLY groupmembers ADD CONSTRAINT groupmembers_member_id_id_fkey FOREIGN KEY (member_id) REFERENCES principals(id) ON DELETE CASCADE; INSERT INTO principals (uri,email,displayname) VALUES ('principals/admin', 'admin@example.org','Administrator'), ('principals/admin/calendar-proxy-read', null, null), ('principals/admin/calendar-proxy-write', null, null);