• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

데이터베이스 관련 질문 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를 쓰는 것이 더 나은 것인가요?

 

답변 1

답변을 작성해보세요.

0

1.

aInfo.belongsTo(user);
bInfo.belongsTo(user);
user.hasOne(aInfo);
user.hasOne(aInfo);

하시면 됩니다.

user 테이블에 모두다 때려박아버리는 것은 안 좋습니다. 원래 DB 설계할 때 null 컬럼 많아지는 건 좋지 않습니다.

2.

네 보통 id는 의미가 없는 값을 두는 게 낫습니다. 예를 들어 mail같은 경우는 고객이 mail을 바꿔달라고 할 수도 있습니다.

권범수님의 프로필

권범수

질문자

2021.10.05

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

부분적으로 관계를 맺는다는 게 어떤 말씀이신가요?

권범수님의 프로필

권범수

질문자

2021.10.05

a 테이블과 b테이블이 1대1 관계를 같는다고 가정했을 때

a 테이블의 일부 데이터만이 b테이블과 연결된 상황입니다.

위에 예시에서 user와 atype은 일부만 연결되있고 나머지는 btype과 연결된 것처럼요.

네 원래 그 용도로 1대1 테이블을 사용하는 겁니다.

권범수님의 프로필

권범수

질문자

2021.10.05

넵 감사합니다.