-
Laonboard 분석 - 사용자 계정 users tableOneBoard 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