asuna : Database Front-end software.

データベースアカウントの作成(方法A)

  1. phpMyadminのユーザーアカウントタブを開きます。
    ユーザーアカウント
  2. 「新規作成」の「ユーザアカウントを追加する」より、新しいユーザーアカウントを作成します。
    作成したユーザーアカウント、パスワードで prog/config.inc のasuna_USER 、 asuna_PASSを書き換えます。

データベースアカウントの作成(方法B)

  1. phpMyadminのインポートタブを開きます。
  2. sql/admin_user.sqlをインポートします。
    ユーザーアカウント asuna 、パスワード asuna2020 でアカウントが作成されます。
    prog/config.incのasuna_USER 、asuna_PASS を書き換える必要はありません。

データベースの準備

  1. phpMyadminでデータベースを作ります。


    データベース名に日本語を使うことができますが、予期しない誤動作を防ぐために、データベース名は単語構成文字(アルファベット、数字、アンダースコア)以外使うことはできません。
    データベースの文字コードは utf8mb4 にしてください。asuna は utf8mb4 を前提にしています。他の文字コードではエラーが出ます。
    作成したデータベース名を、pron/config.inc の $gDataBase に設定してください。
  2. phpMyadminでユーザーが利用するテーブルを作ります。


    テーブル名は単語構成文字(アルファベット、数字、アンダースコア)以外使うことはできません。
    テーブルの文字コードは utf8mb4 にしてください。asuna は utf8mb4 を前提にしています。他の文字コードではエラーが出ます。
    カラム名には日本語を使うことができます。カラム名をデータ入力時の項目として使いますので、 日本語の利用を推奨します。
    主キー(プライマリーキー)がないテーブルは、編集、削除ができません。
    主キーを、カラム名「XXID」、INT型、AUTO_INCREMENTで作ることを推奨します。
    テーブルの構造は、sql/asuna_user_table.sql を参考にしてください。
  3. ユーザーテーブル、ログテーブルを作成します。


    phpMyadminで prog/sql/asuna_user_table.sql、asuna_log_table.sqlをインポートします。
    利用しない場合は作成する必要はありませんが、利用することを推奨します。
    利用の有無にあわせて、pron/config.inc の kUseUserTB、kUseLogTB を設定します。
  4. ユーザーの作成


    初期ユーザーは、ユーザーID asuna、パスフレーズ a cup of russian tea です。
    他のユーザーは asuna でログインし、asuna_user_tableを選択して作成します。
    asuna user
    「新規」をクリックするとユーザー作成ウインドウが開きます。
    新規ユーザー入力
    赤枠が必須入力です。灰色はソフトウエアが自動で設定します。
    ユーザーIDは主キーですので、重複することはできませんが、氏名などは重複できます。
    新規ユーザーのパスフレーズは空欄にしてください。ログイン時に設定画面が出ます。
    パスフレーズの欄を空にすれば、ログイン時にパスフレーズの設定ができるようになります。
    「管理フラグ」は、"閲覧のみ"、"管理者"と"一般"が選択できます。管理者はユーザーテーブル、ログテーブルにアクセスできますので、限定してください。
    初期ユーザーは必ずパスフレーズを変更してください。

asunaの付加機能

  1. asunaはデータ型やカラムのコメントにあるキーワードに従って入力欄を自動設定します。

    データ型 入力欄 説明
    tinyint
    smallint
    mediumint
    int
    integer
    bigint
    <input type="number"> 整数入力欄を作ります
    float
    real
    double
    decimal
    <input type="text" pattern="^-?\d+(\.\d+)?$"> 正規表現を使って入力を実数に限定します
    date <input type="date"> 日付入力欄を作ります
    time <input type="time"> 時刻入力欄を作ります
    datetime
    timestamp
    <input type="datetime-local"> 日時入力欄を作ります
    char(n)
    varchar(n)
    <input type="text"> n <= kTextAreaの場合、1行入力欄を作ります
    char(n)
    varchar(n)
    <textarea> n > kTextAreaの場合、複数行入力欄を作ります
    char(n)
    varchar(n)
    <textarea> カラムを定義するコメント欄に textarea という文字がある場合
    複数行入力欄を作ります
    tinytext
    text
    mediumtext
    longtext
    <textarea> 複数行入力欄を作ります
    enum <select> プルダウンメニューを作ります
    選択項目をあらかじめ作っておく必要があります。
    その他の型 <input type="text"> 1行入力欄を作ります
    ブラウザによっては、input type のサポート状況が違います。
  2. asunaは、データ型がchar(n)、varchar(n)の場合、カラムのコメントにあるキーワードに従って入力欄を自動設定します。

    キーワード 入力欄 説明
    search <input type="search"> 1行入力欄を検索入力にします
    tel <input type="tel"> 1行入力欄を電話番号入力にします。
    2020年現在、入力形式が強制されておらず text と同じになります。
    url <input type="url"> 1行入力欄をURL入力にします
    email <input type="email"> 1行入力欄を電子メールアドレス入力にします
    password <input type="password"> 1行入力欄をパスワード入力にします
    textarea <textarea> 複数行入力欄にします
    text <input type="text"> 1行入力欄にします
    month
    week
    range
    color
    <input type="text"> 1行入力欄にします
    HTML5の要素ですがサポートしていません
    入力欄をサポートしていないブラウザは1行入力になるはずです。
  3. asuna は特定の条件で、入力を編集不可や必須入力にします。

    条件 効果
    コメント欄にrequiredを入れる 入力欄を必須入力にします。
    コメント欄にreadonlyを入れる 入力欄を編集不可にします。
    カラム名を「編集者」にする 入力欄を編集不可にして、ソフトウエアが自動記入します。
    データを編集するごとに氏名を追記してゆきます。
    データ型は、varchar(n) nは100以上にしてください。
    カラム名を「更新回数」にする 入力欄を編集不可にして、ソフトウエアが自動記入します。
    データ型は int 、デフォルト値は 0 にしてください。
    長時間トランザクション対策に利用します。
    カラム名を「更新日時」にする 入力欄を編集不可にして、ソフトウエアが自動記入します。
    データ型をdatetime 、デフォルト値を current_timestamp() ON UPDATE current_timestamp() にしてください。
    カラム名を「登録日時」にする 入力欄を編集不可にして、ソフトウエアが自動記入します。
    データ型をdatetime 、デフォルト値を current_timestamp() にしてください。
    編集画面のプライマリーキー 入力欄を編集不可にします
    AUTO_INCREMENTを設定する 入力欄を編集不可にします

ストーレージエンジンについて

MySQLには色々なストーレージエンジンが利用できます。
プログラムでは、beginTransaction、commit、rollBack関数を使ってトランザクションしていますが、 ストーレージエンジンのMyISAMはトランザクションに対応していないためにbeginTransactionなどの関数は機能しません。
ユーザーテーブル(asuna_user_table)、ログテーブル(asuna_log_table)はデフォルトでMyISAMを使っています。 気になる人はユーザーテーブル、ログテーブルを作る前に、asuna_user_table.sql、asuna_log_table.sqlのMyISAMをInnoDBに変えてください。
ストーレージエンジンのInnoDBはトランザクションに対応していますが、コールドバックアップはできません。