일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- SUM
- python
- itertools
- floor
- 소수
- lower_case_table_names
- 큰 수 나누기
- 리스트 컴프리헨션
- 파이썬
- 딕셔너리
- Dictionary
- Codeforces
- flask
- convention
- list comprehension
- 외래키
- 자료구조
- enumerate
- timestamp
- 네이밍
- project euler
- ceil
- BOJ
- FOREIGN KEY
- 에라토스테네스의 체
- 2557
- SUM()
- mysql
- datetime
- 세그먼트 트리
- Today
- Total
목록분류 전체보기 (465)
늒네 기록
이전에 외래키를 설정하지 않고 테이블들을 관리하던 프로젝트에 참여했던 적이 있었다. 당시에는 별 생각이 없었는데, 다시 보니 이렇게 해서 얻는 이점이 있었을까? Insert 과정에서 빡빡하게 관리를 해주면, 그리고 특정 행을 delete할 일이 없다면 크게 문제될 것은 없을것 같은데, 실제로 다른 사람들도 프로젝트를 진행할때 외래키를 쓰지 않기도 하는지 궁금했다. 검색을 해보면서 흥미로운 링크를 둘 찾았는데, 하나는 여기. 질문자의 시니어도 프로젝트를 돌릴 때 FK를 사용하지 않았는데, 그 이유는 '급하게 INSERT, UPDATE, DELETE를 해야할 때 제약이 걸려있으면 이로 인해서 시간이 잡아먹히는 것도 코스트기 때문'. 이라고 했단다. 아래 달린 답변에도 읽어볼만한 내용이 있었는데, 'INSER..
특정 행을 입력할때 생성 시간을 자동으로 기록해두고 싶으면 데이터 타입에 TIMESTAMP를 넣고 Defalut/Expression에 CURRENT_TIMESTAMP()를 쓰면 된다. 혹은 CURRENT_TIMESTAMP, NOW() 모두 같은 값. 이렇게 하면 행을 생성할때 생성 시간이 자동으로 같이 입력된다. 이 링크 에 따르면 CREATE TABLE시 '{칼럼이름} DATETIME DEFAULT CURRENT_TIMESTAMP' 식으로 디폴트 값을 넣어줄 수 있고, ALTER TABLE시 'ALTER COLUMN {칼럼이름} SET DEFAULT CURRENT_TIMESTAMP'식으로 디폴트값을 수정해줄 수 있다. 위 예시와 같이 TIMESTAMP타입 대신 DATETIME을 사용하는 것도 가능하다...
관계 테이블의 이름을 짓는 것에 대해서도 재미있는 글들이 몇 있었다. 예를 들어, 이 링크 에서는 이런 테이블들을 다음의 이름으로 부른다고 설명해주고 있다. Association table Bridge table Cross-reference table Crosswalk Intermediary table Intersection table Join table Junction table Link table Linking table Many-to-many resolver Map table Mapping table Pivot Table Pairing table Relationship table Transition table 그래서 association table을 검색어로 이런 테이블들 네이밍을 어떻게 하는지 검..
테이블 이름을 짓는 것에 대한 논의가 수없이 많다는 걸 검색해보면서 알았다. 예를 들어, 이 링크. 대표적인 이슈들은 다음과 같다. 1. 테이블, 칼럼 이름을 복수형(plural)으로 할 것인가, 단수형(singular)으로 할 것인가? 2. 테이블 이름 대문자? 파스칼 케이스(PascalCase)? 카멜 케이스(camelCase)? 스네이크 케이스(snake_case)? 3. 줄임말 사용? (위에 걸어둔 링크에 나온 예시처럼, Cus_AddRef. What on earth is that? Custodial Addressee Reference? Customer Additional Refund? Custom Address Referral?) 몇몇 자료들을 보면서 내린 결론은, 일단 본인 편한 컨벤션 하나 ..
문제 풀다가 멍청한 실수를 하고선 기록해둔다. 큰 수에 대해서, a//b의 결과와 int(a/b)의 다를 수 있는데, 이때 int(a/b)가 원하는 값을 리턴하지 않을 수 있다. 예를 들어, stackoverflow.com/a/56470206 링크에서 설명하듯이, - > int(755349677599789174/2) - > 377674838799894592 #wrong answer - > 755349677599789174 //2 - > 377674838799894587 #correct answer 이런 식의 문제가 발생할 수 있으니, 주의할 것. 나중에 시간 되면 문제 발생 이유도 정리하고, 두 계산에 걸리는 시간 비교도 해볼 예정이다.