본문 바로가기
728x90

분류 전체보기 51

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.
C# 과제 C#을 공부하던 중. 과제가 약간 있어서 해당 과제에 대한 답을 달아봤다. 이게 맞는지는 모르겠다. 하지만 이러한 문제를 가지고 고민해본다는 것은 좋은 경험같다. 여러분들도 공부한 내용을 토대로 답을 달아보시고, 본인이 만든 답에 대해 평가해보길 바란다. C#의 특징에 대해 아는데로 기술하시오. C#은 마이크로소프트에서 .NET Framework를 위해 만든 언어로, C와 C++에서 자료형부터 구문, 로직 등을 가져왔으며, Java에서 객체지향 프로그래밍의 개념을 가져왔다. 이게 C# 1.0의 탄생이다. 하지만 그 뒤로 기술의 발전과 산업의 발전으로 점점 요구사항이 다양화되었으며 이를 만족하기 위해 C#도 발전하였다. 그 출발은 C# 3.0부터 JavaScript에서 코드와 데이터를 처리하는 방식을 본 .. 2020. 7. 21.
Lambda Expression - 람다식 람다식은 람다 대수의 형식을 프로그래밍 언어로 구현한 것이다. 람다 대수는 위키피디아에서... 이전에 Java에서의 람다식에 대해 글을 하나 썼었는데, C#의 람다식은 개념은 같으나 그 표현이 약간 달라서 따로 정리한다. 그리고 람다식에 대한 고민? 철학? 을 약간 더 알아보겠다. C#에서 람다식은 아래와 같이 사용된다. 코드로서의 람다식 : 익명 메소드의 간편 표기 용도 데이터로서의 람다식 : 람다식 자체가 데이터가 되어 코드 분석의 대상이 됨. 이 때 람다식은 별도로 컴파일할 수 있으며, 컴파일 시 메소드로도 실행 가능. 1번이 가장 빈번히 쓰이는 것이기에 주로 보겠다. 2번은 필요하면 찾아보자. 익명의 메소드라고 했다. 그럼 익명의 메소드를 한번 보고, 람다식으로는 어떻게 표현되는지 보자. // 익.. 2020. 7. 21.
as, is 연산자 as 와 is 연산자는 무엇일까? 간단하게 말하자면 형변환과 관련되어 있다. 1. as 오류를 발생시키지 않고 형변환이 가능한지 확인할 수 있다. 형변환이 된다고 하면, 해당 인스턴스를 반환하고 불가능하면 null 을 반환한다. Unit unit = new Unit(); Warrior warrior = unit as Warrior; // 형변환이 가능하면 warrior는 Warrior 인스턴스를 가지고, 불가능하면 null을 가진다. 단, 참조 형식끼리만 사용가능하다. (int 같은 값 형식과는 사용이 안됨.) 2. is as가 형변환하고 인스턴스 또는 null을 반환하는 반면, is는 bool형의 true/false를 반환한다. 또, 다른 특징은 as와는 달리 값 형식에서도 사용할 수 있다. 둘을 사용.. 2020. 7. 21.
728x90