인프런 커뮤니티 질문&답변
데이터베이스 관련 질문 2가지
작성
·
174
0
1.
예를 들어 유저가 2분류로 나누어지고
각 분류별로 저장되는 정보가 다를 경우에
user 테이블 (공통되는 정보들, )
pk: id
(mail, password ...)
fk : userTypeid
aInfo 테이블 (a유형 유저만의 정보)
pk: id
(a유형 유저만의 정보들)
fk: userId
bInfo테이블(b유형 유저만의 정보)
aInfo와 동일
이렇게 설계하면 user와 a, bInfo테이블 사이의 관계는 어떻게 정의하나요? (user는 aInfo와 bInfo중 하나와만 관계를 맺어야함.)
aInfo.belongsTo(user);
user.?(aInfo)
혹은 그냥 user 테이블에 모든 정보를 다 떄려박고 해당하지 않는 컬럼들의 값은 null로 저장해야하나요??
더 나은 방법이 있는지도 궁금합니다.
2.
sequelize 에서는 id 컬럼(pk)을 자동으로 만든다고 하였는데
실제로 mail 칼럼과 같이 유니크한 칼럼이 있을 경우에도 mail 칼럼을 pk로 두지않고 저 id를 쓰는 것이 더 나은 것인가요?
답변 1
0
1.
aInfo.belongsTo(user);
bInfo.belongsTo(user);
user.hasOne(aInfo);
user.hasOne(aInfo);
하시면 됩니다.
user 테이블에 모두다 때려박아버리는 것은 안 좋습니다. 원래 DB 설계할 때 null 컬럼 많아지는 건 좋지 않습니다.
2.
네 보통 id는 의미가 없는 값을 두는 게 낫습니다. 예를 들어 mail같은 경우는 고객이 mail을 바꿔달라고 할 수도 있습니다.





1대1 관계는 테이블에 있는 데이터가 관계에 있는 테이블이랑 부분적으로 관계를 맺어도 되는거 맞나요?