Files
004_comission/ryankochun91735/task1/project/_doc_source/erd.md
louiscklaw e08987a3b3 update,
2025-01-31 21:01:16 +08:00

9.4 KiB

Database design (ERD) and metadata


Tables

tbl_addresses

Schema::create('tbl_brands', function (Blueprint $table) {
  $table->id();
  $table->timestamps();
  $table->string('name')->nullable();
  $table->text('description')->nullable();

});
field description
id id of brands
name name of brands
description description of brands

tbl_brands

Schema::create('tbl_brands', function (Blueprint $table) {
  $table->id();
  $table->timestamps();
  $table->string('name')->nullable();
  $table->text('description')->nullable();

});
field description
id id of brands
name name of brands
description description of brands

tbl_categories

Schema::create('tbl_categories', function (Blueprint $table) {
  $table->id();
  $table->timestamps();
  $table->string('name')->nullable();
  $table->text('description')->nullable();

});
field description
id id of brands
name name of brands
description description of brands

tbl_items

Schema::create('tbl_items', function (Blueprint $table) {
  $table->id();
  $table->timestamps();
  $table->string('name')->nullable();
  $table->text('description')->nullable();

});
field description
id id of brands
name name of brands
description description of brands

tbl_orders

Schema::create('tbl_orders', function (Blueprint $table) {
  $table->id();
  $table->timestamps();
  $table->string('name')->nullable();
  $table->text('description')->nullable();

  $table->string('status')->default('pending');
});
field description
id id of orders
name name of orders
description description of orders
status status of orders

tbl_projects

Schema::create('tbl_projects', function (Blueprint $table) {
  $table->id();
  $table->timestamps();
  $table->string('name')->nullable();
  $table->text('description')->nullable();

});
field description
id id of projects
name name of projects
description description of projects

tbl_user_groups

Schema::create('tbl_user_groups', function (Blueprint $table) {
  $table->id();
  $table->timestamps();
  $table->string('name')->nullable();
  $table->text('description')->nullable();

});
field description
id id of user_groups
name name of user_groups
description description of user_groups

tbl_user_roles

Schema::create('tbl_user_roles', function (Blueprint $table) {
  $table->id();
  $table->timestamps();
  $table->string('name')->nullable();
  $table->text('description')->nullable();

});
field description
id id of user_roles
name name of user_roles
description description of user_roles

users

Schema::create('users', function (Blueprint $table) {
  $table->id();
  $table->string('username');
  $table->string('firstname')->nullable();
  $table->string('lastname')->nullable();
  $table->string('email')->unique();
  $table->timestamp('email_verified_at')->nullable();
  $table->string('password');
  $table->string('address')->nullable();
  $table->string('city')->nullable();
  $table->string('country')->nullable();
  $table->string('postal')->nullable();
  $table->integer('status')->default(1);
  $table->integer('groups')->default();
  $table->integer('roles')->default(5);
  $table->text('about')->nullable();
  $table->rememberToken();
  $table->timestamps();
});
field description
username username of user
firstname first name of user
lastname last name of user
email email of user
email_verified_at email verification time of user
password salted passdword of usera
address address of user
city city of user
country country of user
postal postal of user
status status of user
groups groups of user
roles roles of user, default to Guest (ref: to tbl_user_groups)
about about of user

relation tables (many-to-many table)

rel_address_item.php

Schema::create('rel_address_item', function (Blueprint $table) {
  $table->id();

  $table->unsignedBigInteger('item_id');
  $table
    ->foreign('item_id')
    ->references('id')
    ->on('tbl_items')
    ->onDelete('cascade');

  $table->unsignedBigInteger('address_id');
  $table
    ->foreign('address_id')
    ->references('id')
    ->on('tbl_addresses')
    ->onDelete('cascade');

  $table->timestamps();
});
field description
item_id id of items (ref: tbl_items->id)
address_id id of items (ref: tbl_addresses->id)

rel_brand_item.php

Schema::create('rel_brand_item', function (Blueprint $table) {
  $table->id();

  $table->unsignedBigInteger('item_id');
  $table
    ->foreign('item_id')
    ->references('id')
    ->on('tbl_items')
    ->onDelete('cascade');

  $table->unsignedBigInteger('brand_id');
  $table
    ->foreign('brand_id')
    ->references('id')
    ->on('tbl_brands')
    ->onDelete('cascade');

  $table->timestamps();
});
field description
item_id id of items (ref: tbl_items->id)
brand_id id of brands (ref: tbl_brands->id)

rel_category_item.php

Schema::create('rel_category_item', function (Blueprint $table) {
  $table->id();

  $table->unsignedBigInteger('item_id');
  $table
    ->foreign('item_id')
    ->references('id')
    ->on('tbl_items')
    ->onDelete('cascade');

  $table->unsignedBigInteger('category_id');
  $table
    ->foreign('category_id')
    ->references('id')
    ->on('tbl_categories')
    ->onDelete('cascade');

  $table->timestamps();
});
field description
item_id id of items (ref: tbl_items->id)
categories_id id of categories (ref: tbl_categories->id)

rel_order_owner.php

Schema::create('rel_order_owner', function (Blueprint $table) {
  $table->id();
  $table->timestamps();

  $table->unsignedBigInteger('order_id');
  $table
    ->foreign('order_id')
    ->references('id')
    ->on('tbl_orders')
    ->onDelete('cascade');

  $table->unsignedBigInteger('user_id');
  $table
    ->foreign('user_id')
    ->references('id')
    ->on('users')
    ->onDelete('cascade');

});
field description
order_id id of items (ref: tbl_orders->id)
user_id id of categories (ref: users->id)

rel_order_project.php

Schema::create('rel_order_project', function (Blueprint $table) {
  $table->id();

  $table->unsignedBigInteger('project_id');
  $table
    ->foreign('project_id')
    ->references('id')
    ->on('tbl_projects')
    ->onDelete('cascade');

  $table->unsignedBigInteger('order_id');
  $table
    ->foreign('order_id')
    ->references('id')
    ->on('tbl_orders')
    ->onDelete('cascade');

  $table->timestamps();
});
field description
project_id id of project (ref: tbl_projects->id)
order_id id of order (ref: tbl_orders->id)

rel_project_owner.php

Schema::create('rel_project_owner', function (Blueprint $table) {
  $table->id();
  $table->timestamps();

  $table->unsignedBigInteger('project_id');
  $table
    ->foreign('project_id')
    ->references('id')
    ->on('tbl_projects')
    ->onDelete('cascade');

  $table->unsignedBigInteger('user_id');
  $table
    ->foreign('user_id')
    ->references('id')
    ->on('users')
    ->onDelete('cascade');

});
field description
project_id id of project (ref: tbl_projects->id)
order_id id of order (ref: tbl_orders->id)

rel_user_item.php

Schema::create('rel_user_item', function (Blueprint $table) {
  $table->id();

  $table->unsignedBigInteger('item_id');
  $table
    ->foreign('item_id')
    ->references('id')
    ->on('tbl_items')
    ->onDelete('cascade');

  $table->unsignedBigInteger('user_id');
  $table
    ->foreign('user_id')
    ->references('id')
    ->on('users')
    ->onDelete('cascade');

  $table->timestamps();
});
field description
item_id id of item (ref: tbl_items->id)
user_id id of user (ref: users->id)

rel_user_user_group.php

Schema::create('rel_user_user_group', function (Blueprint $table) {
  $table->id();
  $table->timestamps();

  // default to guest
  $table->unsignedBigInteger('user_group_id');
  $table
    ->foreign('user_group_id')
    ->references('id')
    ->on('tbl_user_groups')
    ->onDelete('cascade');

  $table->unsignedBigInteger('user_id');
  $table
    ->foreign('user_id')
    ->references('id')
    ->on('users')
    ->onDelete('cascade');

});
field description
user_group_id id of user_group (ref: tbl_user_groups->id)
user_id id of users (ref: users->id)