From Code to Community: Sponsoring The Perl and Raku Conference 2025 Learn more

CREATE TABLE user_role (
user_id UINT NOT NULL,
role_id UINT NOT NULL,
PRIMARY KEY (user_id, role_id)
);
CREATE TABLE user (
id INTEGER PRIMARY KEY NOT NULL,
username VARCHAR(25) NOT NULL,
password VARCHAR(255) NOT NULL,
created DATETIME NOT NULL,
updated DATETIME NOT NULL
);
CREATE UNIQUE INDEX username_user on user (username);
CREATE TABLE cart_item (
id INTEGER PRIMARY KEY NOT NULL,
cart_id UINT NOT NULL,
sku VARCHAR(25) NOT NULL,
quantity TINYINT(3) NOT NULL DEFAULT '1',
price DECIMAL(9,2) NOT NULL DEFAULT '0.00',
description VARCHAR(255),
created DATETIME NOT NULL,
updated DATETIME NOT NULL
);
CREATE TABLE cart (
id INTEGER PRIMARY KEY NOT NULL,
user_id UINT DEFAULT '0',
created DATETIME NOT NULL,
updated DATETIME NOT NULL
);
CREATE TABLE profile (
id INTEGER PRIMARY KEY NOT NULL,
user_id UINT NOT NULL,
first_name VARCHAR(25),
last_name VARCHAR(25),
created DATETIME NOT NULL,
updated DATETIME NOT NULL
);
CREATE UNIQUE INDEX user_id_profile on profile (user_id);
CREATE TABLE role (
id INTEGER PRIMARY KEY NOT NULL,
name VARCHAR(25) NOT NULL,
description VARCHAR(100),
created DATETIME NOT NULL,
updated DATETIME NOT NULL
);
CREATE UNIQUE INDEX name_role on role (name);
CREATE TABLE wishlist (
id INTEGER PRIMARY KEY NOT NULL,
user_id UINT NOT NULL,
name VARCHAR(50) NOT NULL,
description VARCHAR(255),
created DATETIME NOT NULL,
updated DATETIME NOT NULL
);
CREATE TABLE wishlist_item (
id INTEGER PRIMARY KEY NOT NULL,
wishlist_id UINT NOT NULL,
sku VARCHAR(25) NOT NULL,
quantity TINYINT(3) NOT NULL DEFAULT '1',
description VARCHAR(255),
created DATETIME NOT NULL,
updated DATETIME NOT NULL
);