430 lines
9.4 KiB
Markdown
430 lines
9.4 KiB
Markdown
# Database design (ERD) and metadata
|
|
|
|

|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
# 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)
|