Section 3_Sprint 1


Day1


開発環境


cd{}:{}に移動
ls:現在の場所にはどのようなファイルがありますか.
pwd:現在位置について
touch{ファイル名.拡張子}:ファイルex.new fileを作成します.db/new_file.py
git clone https://github.com/{github_id}/ds-sa-simple-git-flow
git add .
git commit-m「メッセージ」
git push origin main
conda deactivate
conda create -n ds-sa-simple-git-flow python=3.8
pip list

Day2


SQL - 01

In-Memory:Pythonでプログラムを処理する場合、プログラムを実行するときのみデータが存在する
->プログラムの実行が終了すると、使用するデータも消えますFile I/O:スプレッドシートやCSVのようなファイルの読み取り方式で動作する形式で、ファイルの読み取り、ファイルの破損、または複数のファイルの同時処理のたびに、データ量が大きいほど困難になる관계형 데이터베이스:1つのCSVファイルまたはExcelテーブルを1つのテーブルに格納することができ、1回に複数のテーブルを持つことができるため、SQLで簡単にデータをインポートできます.

SQL

  • 定義およびフィーチャー
  • Structured Query Language
  • クエリー
  • データベース言語標準.主にリレーショナル・データベース
  • に使用される.
  • ex.MySQL、Oracle、SQLite、PostgreSQLなど
  • データベースプログラミング言語
  • データベースにクエリーを送信し、必要なデータの入力のみを許可する
  • .

  • SQL JOIN


  • 構文の作成順序と実行順序
  • # 작성 순서
    
    SELECT
    FROM
    WHERE
    GROUP BY
    HAVING
    ORDER BY
    
    # 실행 순서
    
    FROM
    ON
    JOIN
    WHERE
    GROUP BY
    HAVING
    SELECT
    DISTINCT
    ORDER BY

    DB


    なぜDataBaseを使うのですか?
  • データユニット
  • 同時アクセス
  • は破損しません.
    プライマリ・キーと外部キーは何ですか?
  • プライマリ・キー:テーブル内のプライマリ・キー(一意の値、空ではない値、他のテーブルでは外部キー)
  • 外部キー:2つのテーブルを接続するブリッジ(外部テーブルのプライマリキーである必要があります-接続時に1つの結果しか生成できません)
  • リレーショナルデータベースフィーチャー
  • relational database(RDB)
  • テーブルを使用したデータベースkeyword
  • データ:各項目に格納された値
  • 表(または関係):所定の義行および列からなるシステム化データ=エンティティ
  • フィールド(または列):表の
  • レコード(またはtuple):テーブル内の1行の記憶情報=インスタンス
  • キー:テーブル内の各レコードの区切り値.各レコードは一意でなければならず、プライマリ・キー(primary key)や外部キー(foreignkey)などがある.
  • ERD:履歴総括(=!アーキテクチャ)
  • 関係クラス

  • 1:1関係
    テーブル内の1つのレコードは、別のテーブル内の1つのレコードに関連付けられます.
    各電話番号にはプレイヤーが1人いますが、逆も同様です.

  • 1:N関係
    表の各レコードは、複数のレコードに関連付けられています.
    最も一般的な関係
    1人のプレイヤーは複数の電話番号を持つことができるが、逆にX=1つの電話番号が1人のプレイヤーしかいない

  • N:N関係
    複数レコードは複数レコードの関係を持つ조인 테이블の作成と管理
    両方の方向に複数あります
    一人のお客様は複数の観光製品を持つことができ、一人の観光製品も複数のお客様を持つことができます.
  • 「customer package」表のロールは、customer idとpackage idをバンドルしたロール
  • のみです.
  • このテーブルを通じて、どのようなお客様がどのような旅行製品を持っているか、またはどのような旅行製品がどのようなお客様がいるかなどを確定することができます.
  • 重要な点は、テーブルを単独で作成する場合でも、同じプライマリ・キーを持つ必要があることです.

  • 自己参照関係
    プレイヤー1人につき1人の推薦者を持つことができるが、推薦者の立場から見ると複数のプレイヤーを持つことができる=複数回推薦できる
  • 1:N関係は
  • に類似する
  • データベースアーキテクチャ
    ≪モード|Mode|oem_src≫:データベース内のデータの組織および異なるエンティティ間の関係を説明します.データベースの青写真
    データモデリングの実行=シナリオの作成
  • Day3


    SQL - 02


    リレーショナル・データベースの機能の強化


  • 取引
  • データベース状態変更タスクセット
  • は、通常、情報交換やデータベース更新などの一連のタスクを連続的に処理する単位
  • を指す.
  • は、データベースの整合性を確保するために要求されたタスクを完了する基本ユニット
  • と見なす.
  • は、INSERT、DELETE、UPDATEなどの1つ以上のデータ管理言語(DML)と組み合わせて使用される(主に
  • ).
    COMMIT
    トランザクションは、データベースに反映するために決定信号を発行する必要があります.
    確定信号を送信しないと、データベースの内容が変化する
    確定信号=COMMIT
    ROOLLBACK
    COMMITとは逆に
    将来変更される操作の説明を取り消す
    =トランザクション中に、これまでに実行されたすべてのコンテンツがキャンセルされます.
  • 各トランザクションは、特定のタスクから開始する必要があります.
  • を完了するには、バンドルされたすべてのタスクを完了する必要があります.
  • タスクが失敗した場合、すべての失敗
  • トランザクションには、成功または失敗の2つの結果しかありません.
  • データベース・トランザクション定義にはACID属性があり、
  • ACID(Atomicity, Consistency, Isoloation, Durabillity)
  • データベース内の単一トランザクションのセキュリティを確保するために必要なプロパティ.
    げんしせい
    トランザクションを構成する操作はすべて成功または失敗しなければならない.
    コンシステンシ状態コンシステンシ
    トランザクションの前および後のデータベースのステータスは、前の有効=データベースの制約またはルールに基づいたデータベースでなければなりません.
    Isolation孤立性
    1つのトランザクションは別のトランザクションから独立している必要があります=同時実行時と連続実行時のデータベースのステータスは同じである必要があります
    Durability持続性
    トランザクションが正常に実行された場合、実行時エラーやシステムエラーが発生しても、トランザクションのログは永続的でなければなりません.
  • GROUP BY
    分割->適用(集約演算)->マージ
    WHERE vs HAVING
    WHEREはGROUP BYより前に動作するため、集約演算ができない
    正規化
    表を効率的に整理する方法
    第一正規化~第五正規化、半正規化
    通常は第3正規化
    https://mr-dan.tistory.com/10

    Day4


    DB API

  • DataBase Application Programming Interface
  • Pythonとデータベースの相互作用を支援する任意の承諾
  • 実行DBeaver:cursor、実行SQL:connection

    クラウドデータベース

  • リモート管理データベース
  • は、通常、リモート接続時にURI形式で接続される
  • URI論理リソースまたは物理リソースを検索するための
  • URIは、ネットワーク上で情報を検索または受信するために使用される
  • 서비스://유저_이름:유저_비밀번호@호스트:포트번호/경로

  • なぜ
  • DB APIを使うのですか?
  • データベース内のデータの使用
  • Pythonとデータベースを接続するには、どの方法を使用しますか?
    connect

  • セッションを開いたら、すぐにクエリーをキャンセルできますか?
    接続方法で接続=セッションを開くconnectは、データベースに関連付けられたセッションを含むcursorを作成して、セッションを介してデータベースとコミュニケーションをとり、クエリを回避

  • クエリーを無効にするには、どのような方法を使用しますか?cursor.execute
  • クラウドデータベースとは?
    クラウドサービスを使用するデータベース
  • なぜ
  • クラウドデータベースを使用するのですか?
    外部アクセス性が高く、管理コストが低く、拡張性が高く、メンテナンスコストが低い
  • では、BUTセキュリティの問題、速度、クラウドの死亡時にデータベースと通信するためのcursorが作成されました(=管理できないリスク).
    # db 테이블에 csv데이터 넣기
    
    import psycopg2 # db연결 
    
    connection = psycopg2.connect (
    	host = 
        user =
        password =
        database = 
    )
    
    cur = connection.cursor()
    
    cur.execute("""CREATE TABLE table_name(
    				id INTEGER PRIMARY KEY,
                    name VARCHAR(4));
                    """)
                    
    import csv
    index = 0 # 첫 열이 인덱스일때
    with open('file_name.csv' ,'r') as file:
    	row = csv.reader(file)
        next(row) # 다음 인덱스부터 읽기
        for i in row:
        	cur.execute(f"INSERT INTO table_name (columns name ---) VALUES({index},{i[0]} ---);")
            index += 1 
            
    connection.commit()
    cur.close()
    connection.close()
    
    
    csv : https://m.blog.naver.com/pjok1122/221590220300
    # cursor.fetchone
    ## 한번 호출에 하나의 row만을 가져올 때 사용, fetchone()을 여러 번 호출하면 호출할 때마다 한 row씩 데이터를 가져오게 됨
    
    # cursor.fetchall
    ## 모든 데이터를 한꺼번에 가져올 때 사용
    
    # cursor.fetchmany(n)
    ## n개 만큼의 데이터를 한꺼번에 가져올 때 사용