안녕하세요 경비보고서 DB설계 좀 도와주세요[추가질문: <- 11:06분] 0 6 798

by SQL하다저승구경중 [DB 모델링/설계] [2018.10.22 09:33:14]


db.png (67,972Bytes)

(1차 질문)

안녕하세요 SQL을 배우고 있는 학생입니다.

첨부한 이미지를 토대로 DB를 만들고 노멀리제이션하고 (한국어론 잘 모르겠습니다.) 해야하는데

제가 테이블을 구분한다면 아래와 같이 나올거라고 생각됩니다.

EMPLOYEE  [EMP_ID(PK), LNAME, FNAME, EMAIL, TITLE_NUM(FK), MAN_ID(FK)]

MANAGER  [MAN_ID(PK), MAN_NAME, EMP_ID(FK)]

DEPARTMENT [DEPT_ID(PK), DEPT_NAME, EMP_ID(FK), MAN_ID(FK)]

TITLE [TITLE_NUM(PK), TITLE, DOT, TND, POT, TOD, EMP_ID(FK)]

EXPENSE [EXPENSE_NUM(PK), DATE, ACCOUNT, DESCRIPTION, VENDOR, TITLE_NUM(FK)]

CATEGORY [CATE_ID(PK), CATE_INI, CATE_NAME]

SIGNATURE [STATE_NUM(PK), EMP_SIGN, MAN_APPR, RECEIVED_BY, DATE, EMP_ID(FK), MAN_ID(FK)]

PAYMENT [EXPENSE_NUM(PK, FK), CATE_ID(FK), CARD_ADVANCES, OWN_FUNDS, AMOUNT]

TOTAL [EXPENSE_NUM(PK,FK), CATE_ID(FK), SUB_TOTAL, ADVANCES, TOTAL]

잘 못된 부분이 있으면 좀 수정 부탁드리며, 그리고 UNF/ 1NF / 2NF / 3NF를 작성해야하는데

제가 테이블 나눈게 맞다면 저게 3NF가 되겠지만 이 많은 콜룸을 어떻게 UNF 1NF 2NF 나눠야할지 모르겠습니다.

도와주실 수 있는 분 있음 감사하겠습니다.

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

(2차 질문)

EXPENSE_REPORT[EMP_ID, EMP_NAME, TITLE, EMAIL, {MAN_ID, MAN_NAME, {DEPT_ID, DEPT_NAME, DOT, TND, POT { EXPENSE_NUM, DATE, ACCOUNT, DESCRIPTION, VENDOR, {CARD_ADVAN, OWN_FUNDS, AMOUNT, SUB_TOTAL, ADVANCES, TOTAL, {STATE_NUM, EMP_SIGN, MAN_APPR, FIN_APPR, RECIEVED, {CATE_ID, CATE_INI, CATE_NAME, TOTAL}}}}}]

이렇게 UNF(비정규화?)를 해보았는데, 맞는지 확인좀 부탁드리겠습니다.

 

by 우리집아찌 [2018.10.22 09:44:04]

좀 어렵네요..

정보도 없고 생각 보다 한참 걸릴텐데..

1 , 2 ,3  정규화랑 비정규화 이렇게 4개의 모델링을 따로해야하는건가요?

힌트를 드린다면 먼저 비정규로 만든다음 1정규화 , 2 정규화 , 3 정규화 차례로 하시면 좋습니다.

http://wiki.gurubee.net/pages/viewpage.action?pageId=33751579


by SQL하다저승구경중 [2018.10.22 09:52:54]

콜룸수가 많아지니 어렵더라구요.

해외에서 그룹원 중 한 명이 잠수중이라 혼자하는데 조언얻을 곳이 없어서 이렇게 올려보았습니다.

 

a.       Based on the expense report, start with the following original table schema:

Expense (StatementNumber, EmployeeID, Name, Title, Email, Department, Manager, StartDateOfTrip, Nbdays, TripPurpose, ExpenseLineNumber, ExpenseDate, Account, Description, Vendor, Category, PaymentMethod, Amount). Consider (StatementNumber, ExpenseLineNumber) as PK. Draw the dependency diagram. Make sure you label the transitive and/or partial dependencies.

Account refers to a general ledger (GL) account created to hold expense information. Every single type of expense has a GL code or account that is composed of department and type of expense. For instance, an employee working in the IT department (has id 10) has to enter the airplane expense (category T with ID 100) in the first line of the expense report, the GL account is then 10100.  

Definition:  A general ledger is a complete record of financial transactions over the life of a company. The ledger holds account information that is needed to prepare financial statements, and includes accounts for assets, liabilities, owners' equity, revenues and expenses.

b.       Write the relational schemas and create a set of dependency diagrams that meet 3NF requirements. Rename attributes to meet the naming conventions, and create new entities and add attributes as necessary.

c.       Draw the Crow’s Foot ERD. You can use VISIO, Word, etc.

 

좀더  상세하게 적으면 이렇게 하라고 나와있기는 합니다만.... SQL을 공부한지는 6개월 정도 되어가는데 아무리 들어도 잘 이해가 안가네요 ㅠㅠ 쿼리는 참 쉬웠는데....


by 우리집아찌 [2018.10.22 10:17:51]

컬럼수 많지 않습니다.

처음부터 하나씩 해보세요. unf 가 비정규화로 보이는데

일단 하나의 테이블에 모든 컬럼을 나열해보세요.

erd 툴을 사용하면 편합니다.


by SQL하다저승구경중 [2018.10.22 10:34:20]

네 알겠습니다 다시 해보겠습니다.

 


by SQL하다저승구경중 [2018.10.22 11:33:52]

저도 그 말을 처음 들어봐서 ㅎㅎ 검색해봤어요 ㅠㅠ;; 테이블 관계도 그리라면 되는데 흠;;; 외국이라 그런가봐요 ㅠㅠ


by 우리집아찌 [2018.10.22 11:28:24]

c. 만 읽어집니다.. ㅎㅎ

까마귀의 발 erd 그려라 , 넌 visio , word , etc를 사용할수 있다.

까마귀발이 1:N 릴레이션 그림이더군요. ㅎㅎ

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입