CREATE TABLE "repository" ( id uuid PRIMARY KEY NOT NULL, url varchar(255) UNIQUE NOT NULL, created_at timestamp NOT NULL, updated_at timestamp NOT NULL, uploader_ip varchar(15) NOT NULL ); CREATE TABLE "email"( email varchar(120) PRIMARY KEY NOT NULL, hash_md5 varchar(32) UNIQUE NOT NULL ); CREATE TABLE "commit" ( hash varchar(40) PRIMARY KEY NOT NULL, tree varchar(40) REFERENCES commit(hash) NULL, text text NOT NULL, date timestamp NOT NULL, author_email varchar(120) REFERENCES email(email) NOT NULL, author_name varchar(120) NOT NULL, committer_email varchar(120) REFERENCES email(email) NOT NULL, committer_name varchar(120) NOT NULL, repository_url varchar(256) REFERENCES repository(url) NOT NULL ); CREATE TABLE "branch" ( id uuid PRIMARY KEY NOT NULL, name varchar(120) NOT NULL, repository_id uuid REFERENCES repository(id) NOT NULL, head varchar(40) REFERENCES commit(hash) NULL );