- カラム名
- EDBで検索や表示のための参照を行う時に,プログラムに埋め込んでよい名前は,xmlnameのみである.
他の名前(sqlname, 英名,和名など)はプログラムに埋め込んではいけない.
- sqlnameはrelational databaseの構築や改良において,変更される可能性がある.
また,英名,和名はそれよりも簡単に変更される.
ただし,一つのトランザクションにおいては,名称は変更されることはない.
- sqlnameや英名,和名を得たい時には,edb_table_seek_column()等を利用して,xmlnameよりるべきである.
- テーブルの構造
- テーブルに登録されるカラムやカラムの個数は変更される可能性があると考えるべきである.
- 特に,relational database における検索においては,カラムが単体として定義されているか配列として定義されているかを知ることは非常に重要である.(もし,間違ったオペレータを用いて検索を行うと,トランザクションの続行が不可能になる)
- relational database におけるカラムの定義については,edb_table_column_reldb_elements()で得られる個数を参照すること.
- テーブル情報の読み出し
- テーブルの情報を読む時には,edb_table_get()またはedb_table_get_by_name()を利用すべきである.
- RELDB上のカラムの要素数
- RELDB上のテーブルに定義されているカラムが配列か否かは,edb_table_column_reldb_elements()を用いて知ることができる.
この関数が1以外の値を返す時,カラムが配列で定義されている.
- edb_table_column_reldb_elements(
- EdbContext ec, … EDB context structure.
- EdbTableInfo ti, … テーブル構造体.
- EdbColumnInfo super_ci, … 親カラムの構造体.
- EdbColumnInfo ci … カラムの構造体.
- )
- EDBで定義されたテーブルについて知りたい時には,edb_table_column_reldb_elements(ec, ti, NULL, ci)
- カラム毎について知りたい時には,edb_table_column_reldb_elements(ec, ti, super_ci, ci)
- カラムが階層構造をなしているかを知りたい時には,edb_table_column_reldb_elements(ec, ti, ci, ci)
- 詳しくは,table.c:edb_table_column_reldb_elements() を見よう.
- タプル情報の読み出し
- タプルを読む時には,edb_tuple_get()を利用すべきである.
- 1回のトランザクションにおいて読み出されるタプルの情報は変化しないので,libedbでは既に読み出したタプルの情報をキャッシュする.
2度目の読みだしにおいてはキャッシュされているタプルを返す.
- タプルを読み出す際に,検査すべきカラムがある場合には,edb_tuple_get()において必要な処理を実行する.
- #define EDB_READER
- 公開用データベース(edb_university?, edb_public?)のみにアクセスするプログラムは,#define EDB_READERを定義し,コンパイルする.
また,ライブラリとして,libedbr, libedbpubrを利用すること.
- 読み込み専用でかつ公開用データベースの特質を活かした処理を施すため,幾分高速になる.
- ec->readonly
- EdbContext構造体のメンバーreadonlyは,読み込みのみを行うプログラムに対してセットされるべきである.
readonlyがTRUEの場合には,可能な限り一度読み込んだ情報を再利用する.
- #define EDB_READERでコンパイルされたlibedbrを利用すると,自動的にreadonlyがセットされる.