ERD특강을 듣고 기억나는대로 적어서 약간의 오류가 있을 수도?
- PK (Primary Key) : 테이블에서 단 하나만 존재해야 하는 고유한 (Unique) 특성. 데이터에 중복되지 않고 하나씩 대응돼야 한다는 의미. 그래서 대개 정수형태 혹은 겹치지 않는 유일한 값으로 설정
- FK (Foreign Key) : 다른 테이블에서 지정된 Key값을 가져오는(참조하는) 것. 어쩌면 class 상속과도 약간 유사한 느낌.
- 일대일관계 : FK with Unique... 테이블의 고유한 PK와 다른 테이블의 FK가 각각 하나씩 대응되는 관계.
- 다대다관계 : 한 테이블이 일대다관계를 여러개 갖는 것.
거북이반 강의 숙제
class car: crt_speed = 0 # def __init__(self, model, color, max_speed): self.model = model self.color = color self.max_speed = max_speed # def accelerate(self, accel_pedal): self.crt_speed = self.crt_speed + accel_pedal if self.crt_speed >= self.max_speed: self.crt_speed = self.max_speed # def brake(self, brake_pedal): self.crt_speed = self.crt_speed - brake_pedal if self.crt_speed <= 0: self.crt_speed = 0 # def get_speed(self): print(self.crt_speed) # c1 = car('hyundai', 'red', 200) c1.accelerate(50) c1.accelerate(170) c1.brake(50) c1.brake(250) c1.get_speed()
car라는 클래스의 객체를 생성할때 model,color,max_speed를 지정하도록 했고 일단은 페달을 밟는 값만큼 속도가 올라간다고 설정했는데 처음엔 반복문을 사용해서 맥스스피드까지 반복할까 했는데 그럼 원하는 값을 뽑아낼 수 없을 것 같고, brake의 경우에도 항상 0까지 가야만 하기 때문에 현실적이지 않다고 생각했다. 그래서 한번 페달을 한 번 밟을때마다 스피드가 가속되거나 감속하는 방향도 생각해봤는데 이것 또한 맘에 들지 않아서 지금 같이 페달을 특정한 힘으로 누른다는 형태로 메서드를 구현했는데 기회가 된다면 accelerate 함수의 변수에 pedal이 아닌 시간을 넣어 if 문으로 시간이 몇초이상이면 얼마만큼 가속 또는 감속된다는 형태로 함수를 구현해보면 좋을 것도 같다.