DataBases(데이터베이스) - 관계형 데이터베이스 알아보기






    이번 포스팅에서는 관계형 데이터베이스에 대해서 알아보겠습니다



    이전 글 :


    DataBases(데이터베이스) 의 등장배경과 사용하는 이유 - https://server-talk.tistory.com/275


    DataBases(데이터베이스) 구성 알아보기 - https://server-talk.tistory.com/276






    데이터베이스는 관계형 데이터베이스, 객체형 데이터베이스, 계층형 데이터베이스 등등 다양한 형태의 데이터베이스가 있습니다


    그리중 다루게될 MySQL, MSSQL, ORACLE 관계형 데이터베이스에 속하는 제품입니다


    또한, 웹에서 가장 대중적으로 쓰는 데이터베이스가 관계형 데이터베이스 입니다







     관계형 데이터베이스(Relational Database)를 사용하는 이유





    위 내용에서 mb_id 컬럼의 중복이 되는 레코드가 있는것을 보실수 있습니다




    위 그림은 좀더 쉽게 비교하기위한 내용입니다 mb_id 컬럼의 navi 를 nana 로 바꾸려 한다면 1번 레코드와 3번 레코드를 변경해야 됩니다


    그리고 지금은 데이터가 많이 있지 않아 데이터를 바꾸는데 어렵게 느껴지지 않겠지만 데이터가 백만권, 천만권, 일억권이 된다면 정보를 수정하는것이 굉장히 어려운 일이 되게 됩니다


    또한, 1번째 레코드의 id 3번째 레코드의 id가 같은 사람인지도 알아야 됩니다 닉네임이 같을수 있으니까요


    이번에는 중복된 데이터를 없애보도록 해보겠습니다







    위 그림에서 추가로 만든 user 테이블에는 중복으로 등장하지 않는 사용자 정보가 있는 테이블 이고, class 테이블에는 이름이 아닌 숫자가 표기되어 user 테이블의 mb_id로 관계를 맺고 있습니다


    class 테이블 mb_id와 user 테이블의 mb_id는 숫자로 관계를 맺고 있고, class 테이블의 mb_id 1로 조회하게 된다면 HTML은 navi가 됩니다.





    class 테이블과 user 테이블을 더해서 위 그림과 같이 1개의 테이블로 만들어서 볼수 있습니다


    SELECT class name FROM calss LEFT JOIN user ON class.mb_id = user.mb_id


    위의 SQL 문을 이용해서 2개의 테이블을 1개의 테이블로 간결하게 볼수 있으며, 위 SQL에 대해서 1개씩 알아보도록 하겠습니다





    위 SQL 에서는 class와 name의 정보를 표시한다 의미입니다.





    class 테이블 기준으로 가져오는것이며, LEFT JOIN user는 class 테이블과 user 테이블의 결합한 결과를 만들겠다는 의미입니다.




    결합시에 무작정 결합해서는 안되기 때문에 class 테이블의 mb_id와 user 테이블의 mb_id의 값이 같은 정보로 서로 같은 정보로 표시하게되면 오른쪽에 테이블 처럼 가상의 테이블이 만들어지게 됩니다.



    SELECT class name FROM calss LEFT JOIN user ON class.mb_id = user.mb_id





    class 테이블과 user 테이블은 실재로 존재하는 테이블이고, 데이터가 저장이 되어 있습니다


    SQL문으로 만들어진 가상의 테이블은 실재로 존재하는 테이블이 아니고 class와 user 테이블을 SQL 이 시키는대로 조합해서 만든 가상의 테이블 즉 논리적인 테이블이라고 합니다





    위 그림처럼 class와 user 라는 2개의 독립된 테이블이 존재하지만 SQL 문을 사용해서 2개의 테이블이 관계를 맺고 있는 형태의 데이터베이스를 관계형 데이터베이스라고 합니다


    Posted by Server-talk 서버이야기