Relations

One to one

create table users (
	id bigint primary key generated always as identity,
	username text not null
);

create table user_profile_one_to_one (
	user_id bigint primary key,
	bio text,
	age int,
	
	constraint user_id_fk foreign key (user_id) references users(id) on delete cascade
);
-- one to one achieved by having user_id as a primary and foreign key

One to many

create table users (
	id bigint primary key generated always as identity,
	username text not null
);
	
create table user_profile (
	id bigint primary key generated always as identity,
	user_id bigint,
	bio text,
	age int,
	
	constraint user_id_fk foreign key (user_id) references users(id) on delete cascade
);

Many to many

create table students (
    id bigint primary key generated always as identity,
    name text
);

create table courses (
    id bigint primary key generated always as identity,
    title text
);

create table enrollments (
    student_id bigint,
    course_id bigint,
    primary key (student_id, course_id),
    foreign key (student_id) references students(id) on delete cascade,
    foreign key (course_id) references courses(id) on delete cascade
);

Last updated

Was this helpful?