-
카테고리
-
세부 분야
풀스택
-
해결 여부
미해결
데이터베이스 관련 질문 2가지
21.10.03 22:08 작성 조회수 112
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를 쓰는 것이 더 나은 것인가요?
답변을 작성해보세요.
0
조현영
지식공유자2021.10.04
1.
aInfo.belongsTo(user);
bInfo.belongsTo(user);
user.hasOne(aInfo);
user.hasOne(aInfo);
하시면 됩니다.
user 테이블에 모두다 때려박아버리는 것은 안 좋습니다. 원래 DB 설계할 때 null 컬럼 많아지는 건 좋지 않습니다.
2.
네 보통 id는 의미가 없는 값을 두는 게 낫습니다. 예를 들어 mail같은 경우는 고객이 mail을 바꿔달라고 할 수도 있습니다.
권범수
질문자2021.10.05
a 테이블과 b테이블이 1대1 관계를 같는다고 가정했을 때
a 테이블의 일부 데이터만이 b테이블과 연결된 상황입니다.
위에 예시에서 user와 atype은 일부만 연결되있고 나머지는 btype과 연결된 것처럼요.
답변 1