ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Laonboard 분석 - 사용자 계정 users table
    OneBoard 2021. 1. 26. 22:32

    php를 이용해서 만들어진 그누보드의 사용자 계정의 필드들은 과도한 개인정보를 필요로 하기에

    2020년 이후의 현실과는 차이가 많이 있으며

    테이블을 g4_ g5_와 같이 prefix를 이용해서 테이블을 구분하는 것도 부적절 한 것 같습니다.

     

    라라벨의 기본 사용자 Table은 이름, 이메일(unique), 이메일 인증날짜, password를 주요한 필드로 가지고 있는데

    라온보드는 그누보드처럼 users 테이블에 모든 사용자들에 대한 정보를 가지고 있습니다.

     

    - nickname : 닉네임은 이름이라는 개인정보를 위장하는 정보 입니다. 그런데, 이름이 필요한 것일까요? 쇼핑몰이라는 영역에서도 개인정보를 노출하는 것은 바람직하지 않기 때문에 name을 nickname으로 쓰는 것이 더 바람직 하므로, 추가하지 않습니다.

    - 전화번호, 성별 등의 개인정보는 별도의 table로 분리를 해서 필요하면 사용하도록 하는 것이 더 바람직 합니다.

    - 회원 정보의 create, update 시점을 나타내는 created_at, updated_at은 추가를 하는 것이 필요 합니다.

     

    사용자 id, 이름(닉네임), 이메일, 비밀번호 - 4가지 항목으로 이루어진 라라벨의 users 테이블은

    개인정보를 최소화 하는 최근의 시스템 구성을 생각할 때 좋은 선택인 것 같습니다. 

     

    users -> usersDetail (상세 개인정보) ... 1:1 match

     

    라라벨의 기본 사용자 테이블

        {
            Schema::create('users', function (Blueprint $table) {
                $table->id();
                $table->string('name');
                $table->string('email')->unique();
                $table->timestamp('email_verified_at')->nullable();
                $table->string('password');
                $table->rememberToken();
                $table->timestamps();
            });
        }

     

    라온보드의 기본 사용자 테이블

    class CreateUsersTable extends Migration
    {
        /**
         * Run the migrations.
         *
         * @return void
         */
        public function up()
        {
            if(!Schema::hasTable('users')) {
                Schema::create('users', function (Blueprint $table) {
                    $table->increments('id');
                    $table->string('name')->nullable();
                    $table->string('email', 50)->unique();
                    $table->string('password', 60)->nullable();
                    $table->string('nick');
                    $table->date('nick_date')->nullable();
                    $table->string('homepage')->nullable();
                    $table->tinyInteger('level')->nullable()->default(0);
                    $table->char('sex', 1)->nullable();
                    $table->string('birth')->nullable();
                    $table->string('tel')->nullable();
                    $table->string('hp')->nullable();
                    $table->string('certify', 20)->nullable();
                    $table->tinyInteger('adult')->nullable()->default(0);
                    $table->string('dupinfo')->nullable();
                    $table->char('zip', 5)->nullable();
                    $table->string('addr1')->nullable();
                    $table->string('addr2')->nullable();
                    $table->string('addr_jibeon')->nullable();
                    $table->text('signature')->nullable();
                    $table->integer('recommend', false, true)->nullable();
                    $table->integer('point')->nullable()->default(0);
                    $table->timestamp('today_login')->dafault(Carbon::now())->index();
                    $table->string('login_ip')->nullable();
                    $table->string('ip')->nullable();
                    $table->string('leave_date', 8)->nullable();
                    $table->string('intercept_date', 8)->nullable();
                    $table->timestamp('email_certify')->nullable();
                    $table->string('email_certify2')->nullable();
                    $table->text('memo')->nullable();
                    $table->string('lost_certify')->nullable();
                    $table->tinyInteger('mailing')->nullable()->default(0);
                    $table->tinyInteger('sms')->nullable()->default(0);
                    $table->tinyInteger('open')->nullable()->default(0);
                    $table->date('open_date')->nullable();
                    $table->text('profile')->nullable();
                    $table->string('memo_call')->nullable();
                    $table->string('id_hashkey')->nullable();
                    $table->rememberToken();
                    $table->timestamps();
                    $table->string('extra_1')->nullable();
                    $table->string('extra_2')->nullable();
                    $table->string('extra_3')->nullable();
                    $table->string('extra_4')->nullable();
                    $table->string('extra_5')->nullable();
                    $table->string('extra_6')->nullable();
                    $table->string('extra_7')->nullable();
                    $table->string('extra_8')->nullable();
                    $table->string('extra_9')->nullable();
                    $table->string('extra_10')->nullable();
    
                    $table->timestamp('updated_at')->default(Carbon::now())->index()->change();
                });
            }
        }

     

    반응형

    'OneBoard' 카테고리의 다른 글

    OneBoard - 시스템 개발 환경  (0) 2021.07.01
    Laonboard 분석 - 게시판 테이블 구성  (0) 2021.01.27
Designed by Tistory.