This commit is contained in:
louiscklaw
2025-01-31 21:01:16 +08:00
parent fc6f79b133
commit e08987a3b3
8150 changed files with 1149383 additions and 0 deletions

View File

@@ -0,0 +1,429 @@
# Database design (ERD) and metadata
![](./erd.svg)
--------------------------------------------------------------------------------
# Tables
## tbl_addresses
```php
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
```php
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
```php
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
```php
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
```php
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
```php
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
```php
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
```php
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
```php
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
```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
```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
```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
```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
```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
```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
```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
```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)