トップページ -> 研究道具箱と入門演習 -> データベース特論・支援 Web ページ -> データベースの物理構造 (Physical Structure of Relational Database)
[サイトマップへ]   [全文検索へ]   [統計情報へ]   [掲示板へ]  

データベースの物理構造 (Physical Structure of Relational Database)

URL: http://www.db.is.kyushu-u.ac.jp/rinkou/addb/5.html






演習

演習で行うこと


SQLite 3 Analyzer のインストール (Install SQLite 3 Analyzer)

  1. sqlite3_analyzer-3.6.1.zip の入手

    http://www.sqlite.org/

  2. sqlite3_analyzer-3.6.1.zip の解凍

    解凍すると sqlite3_analyzer.exe ができる.

  3. sqlite3_analyzer.exe を C:/SQLite にコピー


バイナリエディタのインストール

  1. バイナリエディタ BZ のファイルの入手

  2. ファイルの確認

  3. ファイルの解凍 (Extract the file)


Sqliteman の起動と終了 (Start and end Sqliteman)

  1. Sqliteman の起動 (Start Sqliteman)

    「Sqliteman」 のアイコンをダブルクリック (double click "Sqliteman.exe")

    Sqliteman のウインドウが開く.(A New window appears)

  2. 終了 (End Sqliteman)

    File」→ 「Exit」で終了.


Sqliteman で既存のデータベースを開く (Open an existing database using Sqliteman)

以下の手順で,既存のデータベース「C:\SQLite\mydb」を開く. (Open an existing database 'C:\SQlite\mydb')

  1. File」→ 「Open

  2. データベースファイル C:\SQLite\mydb を選び, 「開く」をクリック (Click '開く' after choosing the database file "C:\SQLite\mydb")

  3. 「Tables」を展開すると,テーブルの一覧 (List of Tables) が表示されるので確認する (List of tables appears by clicking 'Tables')

  4. テキスト・エンコーディングの設定を確認する (text encoding)

    まず,「Pragmas」をクリック.(Click 'Pragmas')

    encodingの行に「UTF-8」のように表示されている.

    ※ もし,データベースの文字のエンコーディングを変えたいときは, Sqliteman のようなグラフィカルなツールを使うのではなく, sqlite.exe を起動し「PRAGMA encoding=...;」で変える方がずっと簡単でしょう. 例えば「UTF-16le」などに変えたいなど.


SQL を用いたテーブル定義と一貫性制約の記述 (Table definition and integrity constraint specification using SQL)

SQL を用いて,products テーブルを定義し,一貫性制約を記述する. (Define 'products' table and specify integrity constrants of the table using SQL)

リレーショナル・スキーマ (relational schema): reports(id, docid, path, val, created_at) 
  1. reports テーブルの定義 (Define a table)

    次の SQL を入力し,「Run SQL」のアイコンをクリック (Write the following SQL, and click "Run SQL" icon).

    CREATE TABLE reports (
        id         INTEGER PRIMARY KEY AUTOINCREMENT NULL,
        docid      INTEGER NOT NULL,
        path       TEXT NOT NULL,
        val        TEXT NOT NULL,
        created_at DATETIME NOT NULL );
    

    ※ 「SQL Editor」のウインドウには,SQL プログラムを書くことができる. In the 'SQL string' window, you can write down SQL program(s).

  2. コンソールの確認 (Inspect console)

    エラーメッセージが出ていないことを確認


SQL を用いたテーブルへの行の挿入 (Insert rows into a table using SQL)

次のような reports テーブルを作る. (Construct table 'reports')

以下の手順で,SQL を用いて reports テーブルへの行の挿入を行う (Insert rows into table 'reports' using SQL)

  1. SQL プログラムの記述
    BEGIN TRANSACTION;
    INSERT INTO reports VALUES( 1, 1, '/root/title', 'report A', datetime('now') );
    INSERT INTO reports VALUES( 2, 1, '/root/author', 'kaneko', datetime('now') );
    INSERT INTO reports VALUES( 3, 1, '/root/date', '2009/11/29', datetime('now') );
    COMMIT;
    

  2. 複数の SQL 文の一括実行 (Run multiple SQL statements)

    複数の SQL 文を一括実行したいので,カーソルを先頭行に移動した後に, 「Move the cursor to the top statement. Click "Run multiple SQL statements from current cursor position in one batch" icon)

  3. 「Script Output」ウインドウの確認 (Inspect "Script Output" window)

    エラーメッセージが出ていないことを確認


Sqliteman を用いたデータのブラウズ (Browse Data using Sqliteman)


SQLite データベースファイルの物理構造 (Physical Structure of SQLite Database File)

データベースファイルは,レコードを単位とした物理構造になっている

This figure is from the 'SQLite Database File Format' Web page. http://www.sqlite.org/fileformat.html

  1. Sqliteman を終了しておくこと (Exit the Sqliteman)

  2. バイナリエディタ BZ の起動 (Execute the binary editor BZ )

  3. データベースファイルを開く (Open the database file)

  4. データベース・ファイルの中から reports テーブルのレコードを探す (Find the table 'records' in a database file manually)

    records テーブルのルート・ページ番号が 23 の場合:

    データベース・ファイルのデータページの中には,レコードが並んでいることが確認できる.データページの中には未使用部分がある.

    There a sequence of records in data pages in database file.

  5. path フィールドの値の確認 ('path' field)

  6. val フィールドの値の確認 ('val' field)

  7. created_at フィールドの値の確認 ('created_at' field)

    この演習では docid フィールドは無視する.整数データはコード化されている.数値データのコード化体系はデータベース管理システムの種類によって違う. In this exercise, ignore the 'docid' field. The integer value is encoded.

  8. キーレコードの長さ (Key and Record Lenght)


SQLite 3 Analyzer を用いたデータベース情報の確認 (Examine Database Information using SQLite 3 Analyzer)

  1. Sqliteman を終了しておくこと (Exit the Sqliteman)

  2. Windows のコマンドプロンプトで,次の操作を行う.(Use the Windows command prompt, and do the following).

    SQLite データベース・ディレクトリ C:\SQLite に移る.

     
    C:
    cd C:\SQLite  
    

  3. SQLite 3 Analyzer の起動 (Start the SQLite 3 Analyzer).

    このとき,データベース論理名として mydb を指定する.(The logical database name is 'mydb').

    データベースの情報はファイル dbinfo.sql に格納する.このファイル名はなんでも良いが、アルファベットのみを使うのが良い.

     
    .\sqlite3_analyzer.exe mydb > dbinfo.sql
    

  4. SQLite の起動 (Start the SQLite).

    このとき,データベース論理名として mydb を指定する.(The logical database name is 'mydb').

     
    .\sqlite3.exe mydb 
    

  5. dbinfo.sql の実行 (Execute dbinfo.sql)
     
    .read dbinfo.sql
    

  6. SQLite の終了 (End SQLite)

    .exit」で終了.

  7. Sqliteman の起動 (Start Sqliteman)

    「Sqliteman」 のアイコンをダブルクリック (double click "Sqliteman.exe")

    Sqliteman のウインドウが開く.(A New window appears)

  8. File」→ 「Open

  9. データベースファイル C:\SQLite\mydb を選び, 「開く」をクリック (Click '開く' after choosing the database file "C:\SQLite\mydb")

  10. オブジェクト・ブラウザ (Object Browser) の中の「Tables」を展開すると,テーブルの一覧 (List of Tables) が表示される (List of tables appears by clicking 'Tables')

  11. 次に,テーブル space_usedを選ぶ (Select table 'space_used')

    データベースの情報が表示される

    int_pages, leaf_pages, ovfl_pages の列は,は各テーブルが占有しているページの数を示している. (Number of pages which each table occupies)

  12. Sqliteman を終了 (Exit the Sqliteman)

演習問題

次の問いに答えよ. Answer the following questions.

問い (Questions)

次の PTABLE テーブルに関する問題 (About the following 'PTABLE' table)

name    |  type   |  color
------------------------------
apple   |  fruit  |  red
apple   |  fruit  |  blue
rose    |  flower |  white
rose    |  flower |  red
rose    |  flower |  yellow

SQL を用いて PTABLE のテーブル定義を書きなさい (Write the table defintion of the table PTABLE using SQL)

SQL を用いて属性 name の二次索引を生成しなさい (Write a SQL to generate a secondary index on the attribute 'name')

このテーブル定義には PRIMARY KEY が無いので, データベース管理システムは,各レコードのキー値 (Key Value) を自動生成する.

Database system generates a key value for each record automatically.