[SQLAlchemy] 복합키 만들기

happypath·2021년 11월 21일
0

SQL

목록 보기
5/6

user_id 와 book_id 가 결합된 복합키를 설정해 줘야 했다.
한 유저당 해당 책에 대해 한 번만 평가를 할 수 있도록.
'복합키(Composite key)'를 열심히 구글링해 보았는데, 뭔가 명확하게 아직 이해는 덜 된 것 같다.


class Rating(db.Model):
    __tablename__ = 'rating'
    #__table_args__ = db.ForeignKeyConstraint([user_id, book_id], [Users.id, Books.id])
    __table_args__ = (db.PrimaryKeyConstraint('user_id', 'book_id', name = 'user_rating_uc'), )

    def __init__(self, user_id, book_id, point, description):
        self.user_id = user_id
        self.book_id = book_id
        self.point = point
        self.description = description

    cur = datetime.datetime.now()

    user_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False)
    book_id = db.Column(db.Integer, db.ForeignKey('books.id'), nullable=False)
    point = db.Column(db.Integer, nullable=False)
    created_date = db.Column(db.DateTime, nullable=False, default=cur)
    description = db.Column(db.String(250), nullable=False)
    

해당 코드로 우선 해결하였으나,
PrimaryKeyConstraint VS UniqueKeyConstraint 두 가지 중 어떤 것을 사용해야 맞는 것인지....
복합키 설정 방식으로 두 가지를 모두 쓰는 것 같은데, 차이점을 잘 모르겠다.

0개의 댓글