데이터베이스 키 설계 #4
Replies: 7 comments
-
1. 기본키(Primary Key), 외래키(Foreign Key), Unique Key는 각각 무엇인가요?기본키PK: 테이블의 각 행을 유일하게 식별하는 대표 키. (이 속성의 모든 행 값이 달라야한다.) 2. 기본키는 어떤 기준으로 선택해야 하나요?전체 데이터 중에서 유일하고(유일성), 3. 외래키를 사용하는 이유와 장단점에 대해 설명해주세요.외래키는 데이터의 무결정을 유지하기 위해 사용하는데, 즉 부모 테이블(참조대상)에 없는 데이터를 자식테이블(참조하는쪽)에 넣는 것을 방지할 수 있다. 장점
단점
설계 팁) 1.메뉴 테이블
2.손님 테이블
3.주문 테이블
|
Beta Was this translation helpful? Give feedback.
-
Q1. 기본키(Primary Key), 외래키(Foreign Key), Unique Key는 각각 무엇인가요?
Q2. 기본키는 어떤 기준으로 선택해야 하나요?해당 조건들을 기준으로 선택
Q3. 외래키를 사용하는 이유와 장단점에 대해 설명해주세요.
심화질문Q1. 외래키를 사용하지 않는 경우도 있을까요? 있다면 어떤 상황에서 그렇게 설계하나요?
|
Beta Was this translation helpful? Give feedback.
-
기본키(Primary Key), 외래키(Foreign Key), Unique Key는 각각 무엇인가요?1. 기본키(Primary Key, PK)테이블에서 각 레코드를 식별할 수 있게 하는 대표 키 값 2. 외래키(Foreign Key, FK)테이블 간의 연결을 위해 상대 테이블을 참조하는 키 값 3. Unique Key유일성(같은 테이블 내에 같은 값을 가진 수 없는 성질)을 가지는 키 값 예시
기본키는 어떤 기준으로 선택해야 하나요?기본키는 유일성, 최소성, 불변성, 존재성을 가진 값으로 선택돼야 한다.
외래키를 사용하는 이유와 장단점에 대해 설명해주세요.1. 사용 이유테이블은 서로 연관성을 가질 수 있다. 이런 관계를 표현하기 위해 한 테이블이 다른 테이블을 외래키로 참조하여 연결한다. 2. 장점한 테이블에서 다른 테이블로 참조할때 참조하는 테이블은 자식 테이블, 참조 당하는 테이블은 부모 테이블로 부모-자식 관계가 형성된다. 3. 단점외래키로 여러 테이블이 얽혀 있고, 삭제, 수정, 이동 등 유지보수를 할때 얽혀 있는 테이블에서 참조 무결성을 보장하기 위해 데이터를 참조 순서대로 다뤄야하는 복잡함이 존재한다. |
Beta Was this translation helpful? Give feedback.
-
기본키, 외래키, Unique Key는 각각 무엇인가요?기본키(Primary Key)테이블의 각 행을 유일하게 구분하는 키
외래키(Foreign Key)다른 테이블의 기본키나 unique key를 참조하는 키 Unique Key특정 컬럼이나 컬럼 조합의 값이 중복되지 않도록 제한하는 키
기본키는 어떤 기준으로 선택해야 하나요?
이메일이나 이름은 변경될 수 있으므로 기본키로 사용하기보다 별도의 번호를 사용하는 경우가 많음. 외래키를 사용하는 이유와 장단점에 대해 설명해주세요.외래키를 사용하는 이유외래키는 테이블 사이의 관계를 표현하고, 존재하지 않는 데이터를 참조하는 것을 방지하기 위해 사용 장점
단점
|
Beta Was this translation helpful? Give feedback.
-
1. 기본키,외래키는 각각 무엇인가요?기본키란, 한 테이블에서 중복인 값을 갖지 않고, NULL값이 될 수 없는 속성을 말한다. 외래키란, 두개 이상의 테이블 사이에 관계를 나타내는 키로 부모 테이블에 기본키와 같은 속성을 가져야 하며 기본키와 다르게 NULL값을 가질 수도 있다. 2. 기본키는 어떤 기준으로 선택해야 하나요?우선 한 테이블 안에서 중복이 없는 속성이여야 하고, 그중에서도 가장 최소한의 속성들로 묶인 값이어야 한다. 또한 한 행이라도 NULL을 가져서는 안되고, 수정이 대체로 불가능한 값이 기본키로 설정돼야 한다. 3. 외래키를 사용하는 이유와 장단점에 대해 설명해주세요.외래키로 지정된 값이 부모테이블의 기본키 외에는 다른 값을 가질 수 없게 제어하면서, 두개 이상의 테이블 간의 관계가 일관되고 정확하게 유지되도록 하려고 사용한다. 찾아보니 외래키는 실무에서 잘 쓰이지 않는다고 한다. 그 이유는 실무에서는 데이터를 수작업으로 다루는 경우가 빈번한데, 이때 외래키를 사용하면 데이터 불일치가 많이 발생하기 때문에 번거로움이 발생할 수 있다고 한다. |
Beta Was this translation helpful? Give feedback.
-
기본질문 1. 기본키(Primary Key), 외래키(Foreign Key), Unique Key는 각각 무엇인가요?키에 대해 알아보기 전에 알아야 할 유일성과 최소성이라는 개념이 있다.
슈퍼키(Super Key) : 유일성 O, 최소성 X
후보키(Candidate Key) : 유일성 O, 최소성 O
기본키(PK, Primary Key) :
외래키(FK, Foreign Key) :
고유키(Unique Key) :
기본질문 2. 기본키는 어떤 기준으로 선택해야 하나요?
기본질문 3. 외래키를 사용하는 이유와 장단점에 대해 설명해주세요.외래키를 사용하는 이유는 부모-자식 테이블 관계를 맺어주고 스키마를 통해 각 테이블의 연관관계를 알 수 있게 해준다. 또한 외래키의 제약조건인 참조 무결성을 통해 데이터의 정합성을 지키도록 할 수 있기 때문이다. 하지만 이러한 외래키도 단점들이 존재한다.
실무에서는 외래키를 잘 사용하지 않는데, 무결성, 정합성을 희생시켜 개발의 편의성, 안정성, 확장성을 확보하는 것이다. 심화질문 1. 외래키를 사용하지 않는 경우도 있을까요? 있다면 어떤 상황에서 그렇게 설계하나요?외래키는 데이터의 무결성을 보장시켜주지만, 위에서 말한 성능저하, 관리의 어려움, 유연성 부족 등과 같은 단점들과 같은 이유로 실무에서는 잘 사용하지 않는다. 심화질문 2. 애플리케이션에서 무결성을 보장하는 것과 데이터베이스에서 외래키를 사용하는 것의 장단점을 비교해주세요.애플리케이션 자체에서 무결성을 보장
데이터베이스에서 외래키를 사용하여 무결성을 보장
심화질문 3. Auto Increment와 UUID를 기본키로 사용할 때 각각의 장단점을 설명해주세요.Auto Increment 를 기본키로
UUID 를 기본키로
심화질문 4. Natural Key와 Surrogate Key의 차이와 실제 서비스에서는 어떤 방식을 선호하는지 설명해주세요.Natural Key(자연키) : 실제 테이블에 존재하는 데이터 (비즈니스에서 사용 되는 컬럼) 중에서 기본키로 쓰는 키.
Surrogate Key(대체키) : 레코드를 고유하게 식별하기 위해서 인위적으로 생성된 키를 말한다.
실무에서는 어떤 방식을 선호하나? 일반적으로 자연키를 사용한다는 것을 찾아볼 수 있었으나, 그것은 서비스 상황마다 다르다고 할 수 있다. 대체키가 사용되는 경우
|
Beta Was this translation helpful? Give feedback.
-
1.기본키(Primary Key), 외래키(Foreign Key), Unique Key는 각각 무엇인가요?Primary Key: 테이블에서 각행을 식별하는 칼럼. 값이 중복될 수 없다. NULL이 될 수 없다. Unique Key : primary key 는 해당 행을 식별하는 대표 키. unique key 는 식별용은 아니지만 비지니스 규칙상 중복되면 안되는 값.
Foreign Key: 다른 테이블 (또는 자기 자신) 의 기본키나 외래키를 참조 하는 칼럼. 외래키에 들어가는 값은 반드시 부모 테이블에 존재해야 하며, 참조 중인 부모행을 삭제 하는 것을 막아줌. 2. 기본키 선택 기준
이유: 군더더기가 되는 칼럼까지 불필요한 제약에 포함된다. → 나중에 그 칼럼을 수정하려 할 때 제약에 걸릴 수 있음. 3. 외래키 사용 이유와 장단점사용 이유 :
장점:
단점:
|
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
📆 일자: 26년 6월 30일(화)
기본 질문 (필수)
심화 질문 (선택)
추후 질문 (선택)
Beta Was this translation helpful? Give feedback.
All reactions