CREATE TABLE maintainers ( id uuid DEFAULT gen_random_uuid() PRIMARY KEY, name text NOT NULL, email text NOT NULL, UNIQUE (name, email) ); CREATE TYPE package_type AS ENUM ('deb', 'dsc', 'udeb'); -- Table containing information about a package CREATE TABLE packages ( id uuid DEFAULT gen_random_uuid() PRIMARY KEY, name text NOT NULL, type package_type NOT NULL, version text NOT NULL, -- This is just text, as there's no guarantee the source is present on this -- repository. source text, section text, priority text, -- NOTE: could this be better than just text? architecture text NOT NULL, essential boolean DEFAULT false, installed_size integer, maintainer_id uuid REFERENCES maintainers (id) NOT NULL, description text NOT NULL, homepage text, -- NOTE: I don't think this is enough because architecture can be a wildcard UNIQUE (name, version, architecture) );