예전에는 개발자가 ERD를 그리거나 기존 ERD를 수정하는 일이 많았는데 요즘엔 프로젝트 진행시 정품 소프트웨어를 사용하면서 erwinDBA만 사용하고 개발자는 이미지로 생성해서 구경만 하는 경우가 많아졌습니다가끔 소규모 프로젝트에서는 무료 소프트웨어인 eXERD를 사용해서 ERD를 요구하는 곳이 있어서 만드는 방법을 올려 봅니다.


exerd auto erd create


우선 Table들은 DB에 생성이 되어있는 상태에서 진행을 합니다일단 eXERD를 설치하고 실행을 해서 eXERD 창을 열고


exerd auto erd create


네베게이터 에서 마우스 오른쪽을 클릭 하여 새로 작성 > 프로젝트를 선택 하면 새 프로젝트 장이 나타납니다.


exerd auto erd create


새 프로젝트 창에서 일반 항목을 확장하여 프로젝트를 선택 하고 [다음] 버튼을 클릭 하면 프로젝트 명을 입력하는 창이 나타나는데


exerd auto erd create


적당히 프로젝트 이름을 입력하고 저장할 위치를 선택 한 후 [완료] 버튼을 클릭 하면 프로젝트가 생성되고 네비게이터에 새로 생성한 copycoding 프로젝트가 나타납니다여기까지가 프로젝트를 생성하는 거고 실제 ERD를 만드는 과정을 진행 합니다.


exerd auto erd create


생성된 프로젝트에 마우스를 놓고 우측 버튼을 클릭 하여 새로 작성 > 리버스 엔지니어링 메뉴를 선택 하면 리버스 엔지니어링 창이 나옵니다.


exerd auto erd create


리버스 엔지니어링 팝업 창이 나타나면 파일 이름을 적당히 적어주고 [다음] 버튼을 클릭 하면 데이터베이스 관련 설정을 하는 창이 나타납니다.


exerd auto erd create


저는 Oracle XE를 설치해서 ojdbc6.jar 파일을 가지고 있습니다. JDBC 드라이버에 파일 위치를 설정 하고 드라이버 클래스와 URL 연결 정보도 입력 합니다.

Database에 연결을 위한 사용자 ID와 비밀번호도 입력을 해줍니다.

아직까지는 상단에 “x 연결 테스트를 진행하여 연결이 올바른지 확인해야 합니다.” 라는 안내 글이 보입니다좌측 하단 [연결 테스트]를 클릭하여 데이테베이스와 연결을 테스트 합니다.


exerd auto erd create


데이터베이스와 연결이 성공 했습니다연결 성공 창이 안나온다면 짜증내지 말고 설정을 다시한번 확인해 봅니다연결이 성공한 후의 모습은


exerd auto erd create


상단의 안내 문자가 변경 되었습니다. 이제 [완료]버튼을 클릭 하여 데이터베이스에서 Table 정보를 분석 합니다.


exerd auto erd create


열심히 Database를 분석하다 분석이 끝나면


exerd auto erd create


다이어그램 생성 마법사 창이 나타납니다.  [완료] 버튼을 클릭해 주면 다이어그램 생성을 진행 합니다. 그리고 잠시 후 


exerd auto erd create


이렇게 ERD를 생성해 줍니다무료 툴이긴 해도 쓸만한것 같습니다.


- copy coding -


전번 글에 Firebase 웹 사이트에서 프로젝트를 생성하고 Android Studio에 연결하는 방법을 알아 보았습니다이번에는 Android Studio에서 프로젝트를 진행 하다가 Firebase를 연결 하는 방법을 알아 보려고 합니다.


firebase android firestore assistant


두가지 방법 모두 결과는 동일한데 수동으로 작업을 하느냐 자동으로 하느냐의 차이만 있습니다개인적으로는 두 가지 방법 중 좀더 쉬운 방법은 Assistant를 이용하는 방법 입니다.

먼저 안드로이드 스튜디오에서 프로젝트 하나를 생성 합니다.


firebase android firestore assistant


Empty Activity를 선택 하고 [Next] 버튼을 클릭 합니다.


firebase android firestore assistant


프로젝트 명을 적당히 적어 줍니다.


firebase android firestore assistant


Android Studio 메뉴에서 Tools > Firebase를 선택 합니다.


firebase android firestore assistant


Firebase 관련 Assistant 창이 나오고 여러가지 접속 방법들이 나오는데 그 중에 Firestore를 선택 하고 확장된 화면에서 [Read and write documents with Cloud Firestore]를 클릭해 줍니다.


firebase android firestore assistant


그러면 Assistant 팝업 창이 나오는데 Firebase에 연결하는 방법이 순서대로 기술되어 있기 때문에 순서에 맞추어 하나씩 작업을 하면 됩니다저는 여기서 2번까지만 진행 합니다.  2번 까지만 진행하면 Android ProjectFirebase의 연결이 완료 되고 바로 프로그램을 진행 할 수 있습니다.

 

 

1단계 Connect your app to Firebase

 

말 그대로 Android ProjectFirebase의 연결 작업을 진행하는 단계 입니다.

[Connect to Firebase]를 클릭 하면 Firebase 사이트 웹 브라우저 창이 뜹니다.


firebase android firestore assistant


로그인을 안했다면 로그인을 하고 연결 하려는 프로젝트를 선택 합니다아니면 프로젝트를 새로 추가해도 됩니다저는 기존 CopyCoding 프로젝트를 선택 하였습니다.


firebase android firestore assistant


Firebase project 콘솔로 넘어가면서 Android app을 생성 합니다. [연결] 버튼을 클릭해서 연결을 진행 합니다.


firebase android firestore assistant


잠시 작업이 진행 되고 Android Studio Project Firebase가 연결이 되었습니다.

다시 Android Studio로 돌아오면


firebase android firestore assistant


1단계가 Connected로 변경 되었습니다.

 

2단계 Add Cloud Firestore to your app

1단계는 Firebase를 연결한 것이고 2단계는 Firestore를 연결하는 것 입니다.

[Add Cloud Firestore to your app] 을 클릭 하면 팝업이 하나 나옵니다.


firebase android firestore assistant


Android Studio ProjectFirestore를 연결 하기 위해 gradle에 자동으로 소스를 추가 한다고 합니다.  [Accept Changes] 버튼을 클릭 합니다.


firebase android firestore assistant


2단계도 Dependencies set up correctly로 변경 되었습니다.

좌측 Project 파일에 google-services.json 파일이 추가되어 있습니다.  gradle에도 자동으로 소스를 추가했다고 하는데 확인 들어 갑니다.

 

build.gradle(Project)

 

dependencies {
   
classpath
'com.android.tools.build:gradle:3.6.3'
   
classpath 'com.google.gms:google-services:4.3.3'

   
// NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
}

 

 

build.gradle(Module)

apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'

 

dependencies {
   
implementation fileTree(
dir: 'libs', include: ['*.jar'])

    implementation
'androidx.appcompat:appcompat:1.1.0'
   
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
   
implementation 'com.google.firebase:firebase-firestore:21.4.3'
   
testImplementation 'junit:junit:4.12'
   
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
   
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}

  

필요한 설정들이 모두 자동으로 추가 되었고 Android Studio FIrebase가 연결이 되었습니다이제 Firestore Database를 사용하면 됩니다.

 

- copy coding -


Android appFirebase를 연결하는 방법 까지만 테스트 해보려고 합니다



먼저 android studio에서 Empty Activity로 앱을 하나 생성 합니다.


firebase android app


Project Name보다는 package name을 잘 기억해 둬야 됩니다.

com.copycoding.firebase 이렇게 미리 복사 해놓고 [Finish] 버튼을 눌러 작업을 진행 합니다.

 

이제는 웹에서 Firebase에 로그인을 합니다.


firebase android app


연결 하려는 프로젝트를 선택 하고 console로 이동 합니다.


firebase android app


[+앱 추가]를 선택 해서 확장 합니다.


firebase android app


추가할 플랫폼이 확장 되는데 여기에서 안드로이드 아이콘을 클릭 합니다.


firebase android app


Android studio에서 앱을 생성할 때 복사해둔 Package name을 적어주고 닉네입도 입력 합니다.  [앱 등록] 버튼을 클릭해서 2단계로 넘어 갑니다.


firebase android app


구성 파일 다운로드에서 [google-service.json 다운로드]를 클릭하면 파일이 하나 다운로드 되는데 앱에서 firebase에 연결하는데 사용되는 idkey 정보가 들어 있습니다.

다운받은 파일을 그림에서 처럼 android studio에 붙여넣기를 해주고 [다음] 버튼을 클릭 합니다.


firebase android app


안드로이드에 추가한 모습입니다.

 

3단계 Firebase SDK 추가에서는 Firebase를 사용하는데 필요한 내용을 gradle에 추가하는 방법을안내 합니다.


firebase android app


gradle에 이미 있는 내용도 있고 추가 해야할 내용도 있습니다. 직접 손으로 입력하는게 아니고 우측 복사 아이콘을 클릭하여 소스에 붙여넣기를 하면 됩니다.


firebase android app


2개의 gradle에 그림처럼 소스에 추가를 했다면 안드로이드 스튜디오 우측 상단에 나타나는 [Sync now]를 클릭해 줍니다.

잠시 후 안드로이드 스튜디오의 씽크가 종료되면 [다음] 버튼을 클릭 합니다.


firebase android app


4단계에서 앱과 Firebase가 연결 되었다는 내용을 볼 수 있습니다.  4단계에서 수고하셨습니다.”라는 내용이 나오지 않고 계속 맴도는 경우가 있습니다그럼 저는 안드로이드 프로젝트를 다시 만들어 샤용 합니다아직 코딩을 시작하기 전이니 가능 한 방법이죠.


- copy coding -


Firebase의 기능 중 데이터베이스에 데이터를 밀어넣는 작업을 하려고 합니다몇개 되지 않으면 수작업으로 하면 되는데 데이터의 양이 많을 경우에는 하나씩 입력 한다는 건 불가능 하죠우리가 지금까지 사용해 오던 oracle이나 mysql 등 처럼 한번에 밀어 넣는 방법이 있으면 좋을 텐데 아직은 좀 귀찮은 작업들이 필요 합니다언젠가는 좋은 기능들이 추가되겠죠.


firebase firestore excel csv json




작업 순서

1. json 데이터 생성

2. node.js 준비

3. Firebase 설정

4. account key

5. import.js

6. 데이터 입력

 

엑셀자료와 csv 데이터도 실제로는 json 형태로 변경을 해야 입력이 가능 합니다결론적으론 json 형태로 파일을 만들어 입력 하는 방법을 알아 보려고 합니다.

 

1. json 데이터 생성

 

다음과 같은 엑셀 자료가 있고 firestore에 입력 하기위해 json 형태로 변형을 해야 합니다.


firebase firestore excel csv json


먼저 엑셀을 다음과 같이 csv로 저장 합니다.


firebase firestore excel csv json

 

메모장으로 열어보면 쉼표로 데이터들이 구분이 되어 있는데 이걸 복사해서 인터넷에서 온라인으로 csvjson으로 변환해주는 사이트를 이용해 변형을 합니다.

 

{

“member” : [

 {

   "id": "a",

   "name": "copy",

   "age": 11,

   "tel": "000-0000-0000"

 },

 {

   "id": "b",

   "name": "coding",

   "age": 22,

   "tel": "000-1111-1111"

 },

 {

   "id": "c",

   "name": "test",

   "age": 33,

   "tel": "000-2222-2222"

 },

 {

   "id": "d",

   "name": "hohoho",

   "age": 44,

   "tel": "000-3333-3333"

 }

]

}

 

변환된 데이터를 확장자가 json으로 해서 저장을 합니다저는 member.json으로 저장 했습니다.

붉은색 부분은 firestorecollectionmember로 생성을 해서 그곳에 입력을 하기 위해 추가를 했습니다.

 


2. node.js 준비

 

npm 명령을 사용해야 하기 때문에 먼저 node.js가 설치되어 있어야 합니다.  node.js가 설치되어 있다면 먼저 초기화를 위해

 

>npm init

명령을 사용 합니다그리고 추가 입력 부분은 그냥 엔터로 넘어가도 됩니다.


firebase firestore excel csv json


그리고 제일 중요한 firestore 관련 패키지를 설치 합니다.

 

>npm install firestore-export-import


firebase firestore excel csv json


명령이 실행되고 아무것도 없던 폴더에 생성된 파일을 보면


firebase firestore excel csv json


이런 식으로 폴더에 파일들이 생성 되었습니다.

 


3. Firebase 설정

 

이제 firestore에 접속하기 위한 환경 변수들을 생성해야 합니다.  firebase에 접속해서 프로젝트를 선택 합니다.


firebase firestore excel csv json


여기서 [+앱 추가]를 선택 하고


firebase firestore excel csv json


확장된 아이콘들에서 </>를 선택하여 웹 앱을 추가 합니다.


firebase firestore excel csv json


웹 앱을 만들기 위해 이름을 적당히 입력하고 [앱 등록] 버튼을 클릭 합니다.


firebase firestore excel csv json

 

웹 앱에 접속하기 위한 설정 값들이 보이는 군요복사를 해서 옮겨 놓습니다.

 

<!-- The core Firebase JS SDK is always required and must be listed first -->

<script src="https://www.gstatic.com/firebasejs/7.14.5/firebase-app.js"></script>

 

<!-- TODO: Add SDKs for Firebase products that you want to use

     https://firebase.google.com/docs/web/setup#available-libraries -->

<script src="https://www.gstatic.com/firebasejs/7.14.5/firebase-analytics.js"></script>

 

<script>

  // Your web app's Firebase configuration

  var firebaseConfig = {

    apiKey: "AIzaSyCkC3cqbmGfb4XGCX_BUaLKTePvE3em0sU",

    authDomain: "copycoding-bca04.firebaseapp.com",

    databaseURL: "https://copycoding-bca04.firebaseio.com",

    projectId: "copycoding-bca04",

    storageBucket: "copycoding-bca04.appspot.com",

    messagingSenderId: "413154097054",

    appId: "1:413154097054:web:046f67449283eca596488f",

    measurementId: "G-6JQFB5C1Z7"

  };

  // Initialize Firebase

  firebase.initializeApp(firebaseConfig);

  firebase.analytics();

</script>

 

여기에서 var firebaseConfig = {...} 이 부분을 이용해서

 

var firebaseConfig = {

    apiKey: "AIzaSyCXXxxxXXXXxxxxXXXXxxXXxXXXxxXXxXXX0sU",

    authDomain: "copycoding-bca04.firebaseapp.com",

    databaseURL: "https://copycoding-bca04.firebaseio.com",

    projectId: "copycoding-bca04",

    storageBucket: "copycoding-bca04.appspot.com",

    messagingSenderId: "41323232323232324",

    appId: "1:41312323232323:web:02323232323232323232323238f",

    measurementId: "G-623reddfhgjkhfgsdZ7"

}

module.exports = firebaseConfig;

 

config.js 파일을 생성 합니다.

 

 

4. Service Account Key 생성

 

데이터베이스에 접근하기 위한 공개키를 생성하는 단계 입니다아무나 와서 디비를 헤집고 다니지 못하도록 하는 키를 생성하는 단계 입니다.  [서비스 계정] 탭을 선택하면 됩니다.


firebase firestore excel csv json


지금 node.js 를 사용하려는 거니 라디오 버튼을 확인 하고 [새 비공개 키 생성] 버튼을 클릭 합니다.


firebase firestore excel csv json


키를 잘 보관하라는 안내가 나옵니다.  [키 생성] 버튼을 클릭 합니다.


firebase firestore excel csv json


 

[확인] 버튼을 이용해서 키를 저장 합니다파일명은 대충 copycoding-bca04-firebase-adminsdk-vdj8s-4728099cc6.json 이렇게 저장 됩니다.

 

{

  "type": "service_account",

  "project_id": "copycoding-bca04",

  "private_key_id": "4728098675uygf65yfdertu7fgy9upjoi87tgyi5rytt36",

  "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvQ=\n-----END PRIVATE KEY-----\n",

  "client_email": "firebase-adminsdk-vdj8s@copycoding-bca04.iam.gserviceaccount.com",

  "client_id": "118876654423786789765453",

  "auth_uri": "https://accounts.google.com/o/oauth2/auth",

  "token_uri": "https://oauth2.googleapis.com/token",

  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/certs",

  "client_x509_cert_url": "https://www.googleapis.com/serviceaccount.com"

}

 

생각보다 키의 내용이 긴데 대충 잘랐습니다그리고 serviceAccount.json 이름으로 저장을 했습니다.

 

 

 

5. import.js 작성

 

firestore에 입력할 데이터와 설정 파일, 키 파일이 준비가 되었으니 실제 데이터를 추가하는 프로그램을 생성 합니다. 물론 파일명은 자유롭게 해서 생성하면 됩니다.

 

// Imports

const firestoreService = require('firestore-export-import');

const firebaseConfig = require('./config.js');

const serviceAccount = require('./serviceAccount.json');

 

// JSON To Firestore

const jsonToFirestore = async () => {

  try {

    console.log('Initialzing Firebase');

    await firestoreService.initializeApp(serviceAccount, firebaseConfig.databaseURL);

    console.log('Firebase Initialized');

 

    await firestoreService.restore('./member.json');

    console.log('Upload Success');

  }

  catch (error) {

    console.log(error);

  }

};

 

jsonToFirestore();

 

위에서 생성한 3개의 파일이 사용됩니다최종적인 폴더 내 파일들의 모습입니다.

 


firebase firestore excel csv json


이렇게 파일 작업이 완료 되었습니다.

 

 

5. 데이터 입력

 

마지막으로 작성한 import.js 를 실행해 줍니다.

 

>node import.js


firebase firestore excel csv json


upload가 성공했다고 하는데 진짜인지 함 확인해 봅니다.


firebase firestore excel csv json


데이터들이 잘 입력 되었습니다.


- copy coding -


123456···13

+ Recent posts