EBWin` XL[}`

ڕW
	EEBWin/EBPocketɁA[ΘbI]Ǝ쐬@\

v
	E[CyɑΘbIɒPo^ł邱]	-- Ή\
	EMƁB
	EeʂɐȂƁB
	E쐬EPWING/dqubN/PDICƋhł邱
	ẼeLXgXML`̎f[^ꊇ捞ł邱
	EEPWINGx̕C@\
	E}`fBAf[^i[ł
	Ê̂ɉėp邱ƁBO҂\tg邱ƁB
	ErIZԂɊJł邱ƁB
	EUnicodeSʓIɍ̗pB{IɊO͎gpȂAUnicodeɂȂꍇ͖摜B
	EOv/v/Sv//Ȃǂł邱
	Ej[ł邱
	EeLXg`XMLŃ_vo͂ł邱ƁB
	Ek`̃T|[giΉj
	EÍ̃T|[giΉj
	EłȂЂi[ł邱ƁB
	E[U쐬f[^͎RɌJB


	EL̗v𖞂߁ASQLf[^x[XƂB
	EDBGẂAMRpNgȃt[f[^[x[XSQLite3̗pB
	@SQLite3WindowsCEAiOSAAndroidɂڐAĂAf[^x[Xt@CoCi݊B
	EIODBCOLEŊODB̎gp


f[^x[X

EɈ̃f[^x[XΉB
E[Jt@C̏ꍇAgq .ebd 
	<>.ebd
Ef[^x[XɎ̃e[u݂
	bookinfo	
	book		{
	altindex	CfbNX
	link		֘AꃊN
	altinfo		{̕t(gp)

e[u

-----------------------
Table Name:bookinfo
purpose	:()̏
attribute:

create table bookinfo
(
	isbn		CHAR(13),	// ISBNiەW}ԍj̃nCtt13B
	ccode		CHAR(4),	// Čɕt4̕ރR[hB
	booktitle	VARCHAR(255),	// B
	booksubtitle	VARCHAR(255),	// B
	edition		VARCHAR(255),	// ŖB
	seriestitle	VARCHAR(255),	// V[YEpB
	bookauthor	VARCHAR(255),	// ҖB
	pubdate	CHAR(8),		// oŔNB"YYYYMMDD" `̐B
	publisher	VARCHAR(255),	// oŎЁB
	bookcode	VARCHAR(255),	// oŎГ̏ЃR[h

	filename	VARCHAR(255),	// t@C(p)
	compression	INTEGER,	// k`(gp)
					//	NULL or 0	񈳏k
					//	1:		zlib
					//	̑`
	crypt		INTEGER,	// Í(gp)
					//	NULLȂÍȂ
					//	NULLȂAÍꂽÍL[
	bookno		INTEGER,	// ʔԍiMD5nbVj
	indexmask	INTEGER,	// płCfbNX̎ނ̘_a
							// 0Ȃaltindex𖢎gp(V2)
					// 萔FIndexType
	contenttype	INTEGER		// Rec^Cv	TEXT/HTML/XML
					// 萔FContentType
);

E͊{IJepaXbookinfoɏB

-----------------------
Table Name:book	
purpose	:()̖{
attribute:

create table book
(
	id	INTEGER	primary key autoincrement,
					// ڂʂ郆j[Nid
	idkey	VARCHAR(32),		// HTML,XMLvfidɑΉCӂ̕
	no	VARCHAR(255),		// Ԗ(NULL)BЂ̏ꍇ́úA@vȂ
	headword	VARCHAR(255),	// oBڂ̌oƂĕ\镶
					// ANZgL̂܂܊i[
	meaning	TEXT,	// {BCӂ̕BȂB
			// bookinfo.contenttypeɏ]B
	phonetic	VARCHAR(255),	// LBCӂ̕B
	keyword	 VARCHAR(255) COLLATE NOCASE ,	// pȂǕ\Lł̌
					// ANZgtL̓ANZgɐK
	kana	 VARCHAR(255) COLLATE NOCASE ,	// \LB
					// ɉz肵Ă邪Apł悢B
	level	INTEGER	// Pꃌx(gp)
);

create index book_keyword_idkey on book(idkey);
create index book_keyword_idx on book(keyword COLLATE NOCASE);	-- V2
create index book_kana_idx on book(kana COLLATE NOCASE);	-- V2

-----------------------
Table Name:altinfo
purpose	:{̕t(gp)
attribute:

create table altinfo
(
	id		INTEGER,	// ->book.id	{id
	attribute	INTEGER,	// t̎(ڍז)
	no		VARCHAR(255),	// Ԗ(NULL)B
	body		TEXT	// ǉ̔LArȂǂz
				// }`fBȀꍇ̓pXïʒȗ΃pXj
);

-----------------------
Table Name:altindex
purpose	:CfbNXB
attribute:

create table altindex
(
	id		INTEGER,	// ->book.id	{id
	attribute	INTEGER,	// CfbNX̎
					// 萔FIndexType
	tag		VARCHAR(255) COLLATE NOCASE,	// ̃JeS^O
	keyword		VARCHAR(255) COLLATE NOCASE	// 
);
create index altindex_keyword_idx on altindex(keyword COLLATE NOCASE,attribute);

Eattributekeyword̘AL[Ȃ̂ŁAKw肵ČB
E̍ڂɁÃCfbNXo^Ă悢BNXł́APo^邱ƂɂȂB
Ekeywordɂ͐KނƁB(A|XgtB⒆AnCt̏)
EOvƊSv̈Ⴂ́AChJ[hgǂłB
@IndexType.EXACT̓f[^x[Xɂ͋L^Ȃ
	where attribute=IndexType.FWD AND keyword="book"	Sv
	where attribute=IndexType.FWD AND keyword like "book%"	Ov
Ev̏ꍇ́A𔽓]ċL^B
	Fdictionary̌vsꍇ
	(1)altindex.keywordɂ́A𔽓]"yranoitcid"L^
	(2)́A]+"%"Ō
	where attribute=IndexType.BWD AND keyword like "]%"
Ȅꍇ́AɃJeS^Ow肷
	where attribute=IndexType.MULTI AND tag=JeS^O AND keyword like "%"

-----------------------
Table Name:link
purpose	:֘AꃊNBKwj[AV\[X̎
attribute:
create table link
(
	id		INTEGER,	// ->book.id	{id
	attribute	INTEGER,	// N
					// 萔FLinkType
	relid		INTEGER,	// ->book.id	֘Aڂid
	seq		INTEGER,	// A
	comment		VARCHAR(255)	// QƂ̃Rg
);


sKwj[̕\@t
Eŏʃj[F
	id=0,attribute=LinkType.MENU,relid=ʃj[ڂid,seq=0̘A
Eʃj[F
	id=,attribute=LinkType.MENU,relid=<ʃj[ڂid>,seq=̘A
	relid=0́Aȏ̎q̂Ȃŉʃj[\B
Ȅʃj[̌F
	where attribute=LinkType.MENU AND relid=id order by seq
Ẻʃj[̌F
	where attribute=LinkType.MENU AND id=id order by seq

sV\[X̕\@t
E֘AꃊN
	id=,attribute=LinkType.REL,relid=<֘Aid>,seq=̘A
EʌꃊN
	id=,attribute=LinkType.SUPER,relid=<֘Aid>,seq=̘A
EʌꃊN
	id=,attribute=LinkType.SUB,relid=<֘Aid>,seq=̘A


萔

bookinfo.indexmask
altindex.attribute

	IndexType.EXACT	= 0x00	Sv(̂)

	IndexType.FWD	= 0x01	Ov
	IndexType.BWD	= 0x04	v
	IndexType.CROSS	= 0x10	NX
	IndexType.COND	= 0x20	
	IndexType.MULTI	= 0x40	(gp)
	IndexType.MENU	= 0x80	j[

	IndexType.EXACT́AsearchAPIł͎gp邪Af[^x[Xɂ͎gpȂB

link.attribute

	LinkType.MENU	= 0x80	j[
	LinkType.REL	= 0x100	֘A(gp)
	LinkType.SUPER	= 0x101	ʌ(gp)
	LinkType.SUB	= 0x102	ʌ(gp)

bookinfo.contenttype

	ContentType.PLAIN	= 0	vCeLXg
	ContentType.HTML	= 1	HTML
	ContentType.XML		= 2	XML(gp)


 Ruby API

Ef[^x[X̍쐬
	create(dbname,options = {})	optionsbookinfo̎w
Ef[^x[Xopen
	open(dbname)
Ef[^x[Xclose
	close()
EgUNVJn
	begin()
EgUNVI
	commit()
Eڂ̒ǉ
	rowid = insert( idkey,headword,meaning,phonetic,keyword,kana,level=0 )
Eڂ̍폜
	delete( rowid )
Eڂ̍XV
	update( rowid,idkey,headword,meaning,phonetic,keyword,kana,level=0 )
Eidɂ錟B
	[] = searchById( rowid )	߂l1̃R[h̗̔z
EB
	[] = search( keyword,searchType=IndexType::FWD )
					߂lrowid̔z
EN̒ǉ
	InsertLink( rowid,attribute,relid,seq,comment )
EN̍폜
	DeleteLink( rowid )
Et̒ǉ
	InsertInfo(rowid,attribute,no,body)
Et̍폜
	DeleteInfo( rowid )
ECfbNX̒ǉ
	InsertIndex(rowid,attribute,tag,keyword)
ECfbNX̍폜
	DeleteIndex( rowid )

--


2008/11/09	dlver 0.90
2008/09/01	ver1.0	(EBWin3)
2015/01/14	ver2.0	(EBWin4/EBMac)
