mysql data insert 질문 드립니다.

김제연   
   조회 3074   추천 0    

초보 개발자 입니다.. nodejs + mysql 을 사용해서 연습중입니다. 

다름이 아니라 db설계때 .. db를 정규화하면.. 테이블이 10개 정도가 나온다고 하면 

insert시 .. 이 테이블 10개에 각각 insert해줘야 하나요? 아니뭔 무슨 방법이 있는건가요?

관계를 설정 해놓고 .. 어떻게 입력하면 바로 들어가는건지 아니면 

트랜젝션 활성화 시키고 .. 10군데 저장하고 .. 확인 하는 방식인지요?


그리고 .. 불러올때도 마찮가지로 ... 1개 조회하면 다 딸려오는건가요? 아니면 

10개의 테이블에서 조인해야 하나요? 항상 헷갈리네요 . 이런 기본이 안되니까 

한 테이블에 다 몰아넣게 되는것 같습니다.. 하다보면.. 이래서 안되고 저래서 안되고 ㅜㅜ


조언좀 부탁 드리겠습니다.

짧은글 일수록 신중하게.
황진우 2018-11
자료를 분류 부터 하셔야될듯 합니다.
"품명 로트번호 생산일 규격 재질 단위 기타"
이런 씩으로 테이블이 정의를 한다고 했을떄 위 테이블 목록을 가지고 분류를 하셔야됩니다.
즉 품명을 입력으로 할건지 아니면 별도의 테이블을 설정 해서 리스트에서 선택을 할건지 입니다.
각 필드의 입력 방식을 한거번에 수작업 하는거와 별도로 테이블을 만들어 리스트 형식으로 선택 하는것이지요.
분석 예)
품명은 리스트로 만든다
로트번호 리스트로 만든다
생산일 수동입력(날짜선택)
규격 리스트로 만든다
재질 리스트로 만든다
단위 리스트로 만든다
기타 수동입력(텍스트 입력)

이 하나의 테이블을 완성 하기 위해서 6개의 다른 테이블을 만들어야 됩니다.
     
김제연 2018-11
네 ... 정규화 한다음에
입력과 .. 출력이 궁금해서요 ..
2420 님 말씀처럼 ORM 을 써야 하는건가요 ..
ORM은 개념이 잘 모르겠어서 모델 만들고 해야해서 ..
그냥 쿼리 빌더로 쓰고 있어서요 ..
쿼리 빌더로 하게 되면.. 6개로 나눠져 있으면..
6개를 다 join 해서 가져와야 하는지?
          
황진우 2018-11
조인으로 가지고 오는것이 맞습니다.
단점은 자료가 많으면 불러 오는것이 느릴수도 있습니다.
쿼리 조건문을 잘 정리 하셔야 빨리 불러 옵니다.
* 이런 조건은 사절입니다.. 하하하
황진우 2018-11
기타 조건은 생략 했습니다.
inset into 품목DB from rec(0).품명= txt_품명 rec(1).로트번호=txt_로트번호 rec(2).생산일=txt_생산일 rec(3).규격=txt_규격 rec(4).재질=txt_재질 rec(5).단위=txt_단위 rec(6).기타=txt_기타

주의 형식이 틀릴수도 있습니다.. 하하하
단지 이런씩으로 원리를 예시로 적은것입니다..
     
김제연 2018-11
rec(0)이게 테이블인가요? 저런식으로 여러 테이블을 지정할 수 있나요?
select시는 어떻게 가져와야 할까요?
          
황진우 2018-11
하하하 잘못 적었네요..
다 rec(0) 입니다... 하하하
황진우 2018-11
select 때에는 코드만 가지고 옵니다.
디스플레이때는 내용들을 보여 주지만 DB에 저장 할때는 키코드만 들어 갑니다.
품목DB 의 필드 내용을
품명no,로트번호no,생산일,규격no,재질no,단위no,기타

위에 예시대로 하면 품목DB 에는 no 값만 들어 갑니다.
생산일 이나 기타는 수동입력이기에 내요이 바로 품목DB에 저장이 되는것이고요.
황진우 2018-11
select  를 한다고 보면
select  품명db.품명no=품목db.품명no,로트번호db.로트번호no=품목db.로트번호no,규격db.규격no=품목db.규격no,재질db.재질no=품목db.재질no,단위db.단위no=품목db.단위no
from 품목db 품명db 로트번호db 규격db 재질db 단위db  where .............

이렇게 될듯 합니다...
김백곰 2018-11
쉽게 생각하시면 될 듯 한데요.
윗분 설명처럼 자료의 분류, 성격등을 분류하면서 테이블 구조를 설계하시면 될 듯 하네요.
- 쿼리빌더는 SQL문장과 프로그램 코드를 분리해서 좀 readable 하게 만들어주는 툴 같은데요. 이걸 더 확장한 것이 ORM 정도로 생각하시면 됩니다.
-  트랜젝션은 좀 더 파고들면..그러하니 쉽게 SQL을 써서 DB변하시키는건데 하나이상의 SQL을 수행했을때 제대로 결과가 반영되는가.고런건데요. 보통은 프레임워크에서 이 기능을 제공해서 개발자가 굳이 신경쓸 필요는 지금은 없지만 예전에 JDBC 가지고 프로그래밍할때는 DB connection을 하고 제대로  close 하거나 commit 하지 않으면 나중에 시스템까지 다운되고 그랬답니다. 당연히 열기만 주구장창 열고 닫질 않았으니까요. 저는 무한루프 잘못돌려서(엄밀히 말해 크리티컬 에러)  데이터 베이스 시스템을 날려먹은 적이 2번 정도 있어요 ㅋㅋ
- 테이블을 설계하면 나중에 확장을 하는 경우가 생길텐데요. 그 확장은 나중에 공유키..테이블에 공용키(유니크키 설정이 좋음)을 가지고 확장하면 좋습니다. 그게 나중에  join 형태로 데이터를 가져오면 됩니다.

조그만 도움이라도 되었으면 합니다.
딸기대장 2018-11
정규화해서 10개 테이블이 나온다면 메인테이블 insert시 트리거등으로 다른 테이블도 처리 해줘야 되는데...
그건 db입장이고...
프로그래머 입장에선 개별 테이블마다 모두 insert처리해야 됩니다.
dba가 설계하고 프레임웍도 만들고 개발자한테 사용하도록 하는 건....현장에선 환상이죠.
그냥 개발자에게 다 맡겨버리는것이 현실입니다.
정규식으로 설계하시고 각 테이블의 crud는 프로그램으로 처리해야 된다고 생각하세요.
단 테이블crud정도는 프레임웍을 직접 만드시고요.
비즈니스 로직과 db프레임웍은 분리하셔야 됩니다.
대개 현장에선 테이블 구조설계는 db를 좀 아는 사람이 진행하고 crud 구현은 프로그래머가 개발때 같이 진행합니다.


QnA
제목Page 4811/5715
2014-05   5197573   정은준1
2015-12   1730305   백메가
2021-04   3076   2CPUI김세훈
2020-06   3076   아싸조쿠나
2023-02   3076   짱님
2019-02   3076   김제연
2020-03   3076   2CPUI김세훈
2017-05   3076   유포리아
2020-12   3076   진신두
2024-05   3076   VSPress
2018-11   3075   김제연
2019-08   3075   2CPUI김세훈
2019-09   3075   행복하세
2020-11   3075   김동혁1
2019-09   3075   김민성
2017-06   3075   검은콩
2020-10   3075   검은콩
2020-05   3074   negativete
2022-01   3074   흰털너부리
2020-05   3074   신은왜
2022-04   3074   DDDIE
2020-04   3074   김영기