티스토리 뷰
- DateBase
DB? : 데이터를 저장한 파일들의 집합체
DBMS?? : 데이터베이스를 관리하기 위한 소프트웨어
-종류가 다양함
가장 많이 사용하는것은 RDB(관계형 데이터 베이스)
RDBMS?? : 관계형 데이터베이스를 생성 수정 관리 할수 있는 소프트웨어
- table - column 형태로 데이터 저장
- 테이블과 테이블간의 연관관계(FK)를 이용, 필요한 정보를 구현
- 정규화: 데이터의 정합성을 확보하기 위해 테이블을 분할해 생성
(중복 데이터 저장 방지를 위해서 정규화!)
- 수평적 확장 어려워서 수직적으로 확장... 한계에 직면할수 있음
1. Table
row - column 으로 이루어진 데이터 집합
일관된 특징을 가진, 중복되지 않는 데이터를 담기위한 하나의 데이터 집합
2. Column (Attribute)
세로 데이터
데이터 타입 지정 가능 (optional 포함)
테이블에서 특정 내용을 찾기위해서는 column 내용을 기준으로 찾는다.
3. Row (Record)
가로데이터
한 객체에 대한 정보를 가지고 있음
Primary Key (PK) 로 구별 가능
4. PK (Primary Key)
테이블에 대한 고유 식별값 -> only one
Record 검색의 기준이기 때문에 내부적으로 인덱싱 함 (빠른 검색 위해서)
중복 X, 비어있음 X
5. FK (Foreign Key)
A 테이블의 PK 가, B 테이블의 column 에 들어있는 경우 ( B 의 Column == FK )
외부 식별자 키로 테이블관 관계 의미
테이블간 종속이 필요하다면, 접점의 column을 FK로 지칭해 서로 참조 가능
6. Unique Key (그림에 없음...)
값의 중복을 허용하지 않기 위해 column 에 unique 제약 설정
비어있음 O
- 과제 진행
1. tableview cell button action.. (addTarget)
class MainViewController: UIViewController {
...
override func viewDidLoad() {
super.viewDidLoad()
...
}
@objc func checkButtonClicked(sender: UIButton) {
//try 써줘야 한다. 파라미터 변수가 sender 이니까 sender.tag 해야함.
//bool 값에서 버튼 = !버튼 하면 반대값으로 바뀜
try! localRealm.write{
tasks[sender.tag].checkBtn = !tasks[sender.tag].checkBtn
}
tableView.reloadData()
}
@objc func bookmarkButtonClicked(sender: UIButton) {
try! localRealm.write{
tasks[sender.tag].bookmarkBtn = !tasks[sender.tag].bookmarkBtn
}
tableView.reloadData()
}
...
}
extension MainViewController: UITableViewDelegate, UITableViewDataSource {
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
guard let cell = tableView.dequeueReusableCell(withIdentifier: ShopinglistTableViewCell.identifier) as? ShopinglistTableViewCell else { return UITableViewCell() }
cell.checkButton.tag = indexPath.row
cell.checkButton.addTarget(self, action: #selector(checkButtonClicked(sender:)), for: .touchUpInside)
cell.bookmarkButton.tag = indexPath.row
cell.bookmarkButton.addTarget(self, action: #selector(bookmarkButtonClicked(sender:)), for: .touchUpInside)
}
분명 몇번 했는데 자꾸 까먹어서 박ㅡ제 (또 까먹으면 지상렬)
1. 누르는 버튼이 어떤 버튼인교?
cellForRowAt 에서
cell.Button.tag = indexPath.row 로 tag 설정 ( 몇번째 셀의 버튼인지 알아야하니까~)
cell.Button.addTarget(.. , action: #selector(@objc funcname(sender: )), for: .touchUpInside)
2. 버튼을 누르면 어떤건 할것인교?
class 에서 action function 구현
- bool 값 toggle() , 삼항연산자
// bool toggle
var myBool: Bool = true
print(myBool)
// true
myBool = !myBool
print(myBool)
// false
myBool.toggle()
print(myBool)
// true
// 삼항연산자
let resultBool: String = myBool ? "True" : "False"
print("resultBool:\(resultBool)")
// resultBool:True
- tableview 제대로 안나올때
api 로 데이터 받아왔는데 분명히 있어야할 tableview 가 없을때 (당황하면 안됨)
1. tableView 로 구현했을 경우 viewDidLoad 에
tableview.delegat = self
tableview.dataSource = self
선언 했는지?
2. numberOfSection 이 0으로 선언해논건 아닌지?
3. api 데이터 받아오고 나서 tableView.reloadData() 했는지?
'SSAC iOS' 카테고리의 다른 글
SeSAC 2021.11.01 (24) (0) | 2021.11.02 |
---|---|
SeSAC 2021.10.30 (23) (0) | 2021.11.01 |
SeSAC 2021.10.27 (21) (0) | 2021.10.28 |