본문 바로가기
728x90

분류 전체보기 54

JOIN 문제 해결 앞서 살펴본 tables 간의 관계로 인한 Join 문제가 있었다. 1:N의 data가 생기면 어떤 data를 filtering해야 원하는 data가 나올까... 자! 이제 그 해결방법을 알아보자. 먼저 본인이 고민하고 고민해서 작성한 query는 아래와 같았다. SELECTSV.ServerName ,SV.ServerIP ,SV.AccountInfo = CASE WHEN EXISTS(SELECT * FROM dbo.ServersPermissions AS SVP INNER JOIN dbo.Users AS US ON (SVP.PermitTo = US.UserNo) WHERE SV.VMName = SVP.VMName AND US.PersonNo = @LoggedUser) THEN 'ID: ' + SV.Acco.. 2020. 11. 11.
문자+숫자 DB 컬럼 정렬하기 DB 컬럼을 정렬할 때 간혹 컬럼 data가 문자+숫자로 되어 있어서 정렬이 이상하게 될 때가 있다. 가령 아래와 같다. SELECT * FROM VirtualMachines; 이런 경우에는 SELECT * FROM VirtualMachines ORDER BY VMName; 이렇게 수행해도 같은 결과가 나온다. 숫자의 정렬방식은 1, 10, 2, 3, 4, 5, 50 ... 이런 식이기 때문이다. 그럼 어떻게 변경해야할까? SELECT * FROM VirtualMachines ORDER BY LEN(VMName), VMName; 이런식으로 변경해주면 된다. LEN 이란 문자열의 길이를 반환해주는 함수이다. (같이 알아두면 좋은 것은 DATALENGTH 함수이니, 찾아보길 바란다.) 문자열의 길이로 먼저 .. 2020. 11. 9.
JOIN 문제 오늘은 SQL을 다루면서 있었던 문제에 대해서 설명하면서, 어떻게 해결해나갈지 고민해보겠다. 아래 Table들이 있다고 하자. 상황은 아래와 같다. 1. 모든 Servers의 목록을 보여준다. 단, Login user가 각각의 Server에 접근권한(Permission)이 있는 경우에만 Server에 Login할 수 있는 ID와 PW를 볼 수 있다. (권한이 없으면 No permission 이라고 띄운다.) 2. ServersPermissions의 PK는 ServerName과 PermitTo를 합친 것이다. 3. 하나의 Server에는 여러 users가 권한(Permission)을 가질 수 있다. 즉, ServersPermissions Table에는 하나의 serverName과 여러 User가 매칭된다는.. 2020. 11. 5.
RDBMS 정규화(Normalization) - 2/2 지난 글에서 RDBMS 정규화가 왜 필요한지 이상현상(Anomaly)과 함께 설명하였다. 정규화가 6단계로 이뤄져있다는 것도 간략히 알아봤다. 그럼 이제 정규화에 대해서 본격적으로 알아보겠다. * 참, 정규화는 단계가 점점 높아지는데 상위 단계의 정규화는 하위 단계의 정규화를 만족하고 있다는 것을 알아야한다. 1. 1차 정규화(1NF) - 원자값으로 구성 위 Tables을 보자. 첫 번째 table에는 한 user에게 email 주소가 두 개 들어가 있다. 이게 원자값으로 구성되지 않다고 볼 수 있다. 여기서 문제는 가령 유저가 하나의 email 주소를 변경했을 때, 기존 email에 값에서 변경된 값을 찾아서 다시 넣어줘야한다거나 다 가져와서 변경된 걸 찾아넣고 모두 덮어쓰기를 한다거나의 문제가 있을 .. 2020. 9. 27.
RDBMS 정규화(Normalization) - 1/2 정규화(Normalization)의 개념 정규화란 뭘까? 우리가 흔히 DB라고 알고 있는 RDBMS(Relational DataBase Management System)를 설계할 때, 중복을 최소화하면서 데이터 구조를 짜는 프로세스이다. 그렇다면 왜 중복을 최소화하는 정규화를 할까? 이를 하지 않으면 이상 현상(Anomaly)이 발생하기 때문이다. 이상 현상(Anomaly)이란? 정규화를 적절히 하지 않은 DB 또는 Relation(Table)에 데이터가 중복되고 이 Table에 어떠한 작업을 할 때 비합리적인 문제들이 발생하는 현상이다. * Relation은 행(Rows)과 열(Columns)로 구성된 Table이다. 이상현상은 아래와 같다. 이상 현상 설명 삽입이상 데이터를 테이블에 저장할 때, 불필.. 2020. 9. 24.
Stored Procedure - 저장 프로시저 오늘은 Stored Procedure ( 이하 SP ) - 저장 프로시저에 대해 알아보자. 회사에서 SP를 사용하기에 궁금증이 생겼었다. (여기선 MSSQL / T-SQL 의 기준으로 용어들을 설명한다.) SP는 무엇인가 ? MS Docs 에 SP에 대한 정의로 "SQL Server의 저장 프로시저는 하나 이상의 Transact-SQL 문 그룹이거나 Microsoft .NET Framework CLR(공용 언어 런타임) 메서드에 대한 참조입니다." 라고 나온다. 솔직히 CLR 메서드에 대한 참조는 무슨 말인지 모르겠고, 단순히 여러 SQL문이 존재하는 공간(파일)이라고 보겠다. SP와 다른 프로그래밍 언어의 유사점 1. SP를 호출하는 프로그램으로부터 입력 매개 변수를 받아 여러 출력 값을 반환한다. 2.. 2020. 8. 11.
728x90