# Readme File > ## ![Datenbank Design](https://dbdiagram.io/d/Geizkragen-695e708939fa3db27b5c7599) > ![user](assets/images/DB_Design_user.png) > ![products](assets/images/DB_Design_products.png) ```sql Table categories { categoryID int [pk] name varchar(255) parentCategoryID int } Ref: "categories"."parentCategoryID" < "categories"."categoryID" Table brands { brandID int [pk] name varchar(255) } Table products { productID int [pk] categoryID int brandID int model varchar(255) ean varchar(20) description text } Ref: "products"."categoryID" < "categories"."categoryID" Ref: "products"."brandID" < "brands"."brandID" Table shops { shopID int [pk] name varchar(255) website varchar(255) } Table offers { offerID int [pk] productID int shopID int price decimal(10,2) shippingCost decimal(10,2) inStock boolean productURL varchar(500) lastUpdated timestamp } Ref: "offers"."productID" < "products"."productID" Ref: "offers"."shopID" < "shops"."shopID" Table attributes { attributeID int [pk] name varchar(255) unit varchar(50) dataType varchar(20) } Table categoryAttributes { categoryID int attributeID int } Ref: "categoryAttributes"."categoryID" < "categories"."categoryID" Ref: "categoryAttributes"."attributeID" < "attributes"."attributeID" Table productAttributes { productID int attributeID int valueString varchar(255) valueNumber decimal(10,2) valueBool boolean } Ref: "productAttributes"."productID" < "products"."productID" Ref: "productAttributes"."attributeID" < "attributes"."attributeID" Table users { userID int [pk] email varchar(255) passwordHash varchar(255) displayName varchar(255) isActive boolean createdAt timestamp } Table roles { roleID int [pk] name varchar(50) } Table userRoles { userID int roleID int } Ref: "userRoles"."userID" < "users"."userID" Ref: "userRoles"."roleID" < "roles"."roleID" Table userFavorites { userID int productID int createdAt timestamp } Ref: "userFavorites"."userID" < "users"."userID" Ref: "userFavorites"."productID" < "products"."productID" Table priceAlerts { alertID int [pk] userID int productID int targetPrice decimal(10,2) isActive boolean createdAt timestamp } Ref: "priceAlerts"."userID" < "users"."userID" Ref: "priceAlerts"."productID" < "products"."productID" Table notifications { notificationID int [pk] userID int title varchar(255) message text isRead boolean createdAt timestamp } Ref: "notifications"."userID" < "users"."userID" Table reviews { reviewID int [pk] userID int productID int rating int comment text createdAt timestamp } Ref: "reviews"."userID" < "users"."userID" Ref: "reviews"."productID" < "products"."productID" Table userSessions { sessionID varchar(128) [pk] userID int expiresAt timestamp } Ref: "userSessions"."userID" < "users"."userID" ```