ΰ̣:
	1 ϡ°ɬ1ĤĤȤ̣
		primary key ϡɬ 1 Ȥʤ롣
	01 ϡ°1ĻĤȤ(optional)̣
	0N ϡ°ʣ(0ʾ)뤳Ȥ̣
	1N ϡ°ʣ(1ʾ)뤳Ȥ̣

	(PK)  primary key
	(FK)  foregin key
	(IE)  inversion entry (Ť)

	[CI]  case insensitive ʸ
		Τʤʸ case sensitive

------------------------------------------------------------------------

gfarm-2.x Υ (߷״)

: Host
	°:	hostname: ʸ [CI], 1 (PK)
		architecture: ʸ, 1 (IE)
		ncpu: , 1
			ncpu == 0 ΥޥϡCPU 󶡤
			ǥСȤƤΤư롣
			ޥǤϡgfrcmd ʤ
		port: , 1
			gfsd Υݡֹ
		hasDisk: , 1
			ǥΰ󶡤뤳Ȥ򼨤
			gfarm-2.x ΥСǤϤϾ 1 ͽꡣ
	Ϣ:
		- ֥ۥ̾̾ġ׻
		- ֥ץꥫݻ׻

: HostNameAlias
	°:	hostnamealias: ʸ [CI], 1 (PK)
			ˤϡhostname  hostalias ξϿ
		hostname: ʸ [CI], 1 (FK) (IE)
	Ϣ:
		- ۥ̾̾:
		  Host(hostname) : HostNameAliases(hostname) = 1 : 1N

: User
	°:	username: ʸ, 1 (PK)
		userRealName: ʸ, 1
		gfarmHomeDir: ʸ, 1
		gsiDN: ʸ, 01 (IE)
	Ϣ:
		- ֥롼פ°׻
		- INode Υʡ׻

: Group
	°:	groupname: ʸ, 1 (PK)
	Ϣ:
		- ֥桼ޤ׻
		- Inode Υ롼ס׻
	 groupname=="gfadmin" Ը¤ĥ롼פȤ

Ϣ: GroupAssignment
	°:	username: ʸ, 1 (PK) (FK)
		groupname: ʸ, 1 (PK) (FK)
	Ϣ:
		- 롼פ°:
		  User(username) : GroupAssignment(username) = 1 : 1N
		- 桼ޤ:
		  Group(groupname) : GroupAssignment(groupname) = 1 : 0N

: INode (mode ͤˤäơ֥ DirINode, FileINode ʬ)
	°:	inode: , 1 (PK)
			inode==2  root directory Ȥ롣
		mode: , 1
		username: ʸ, 1 (FK)
		groupname: ʸ, 1 (FK)
		atimesec: , 1
		atimensec: , 1
		mtimesec: , 1
		mtimensec: , 1
		ctimesec: , 1
		ctimensec: , 1
	Ϣ:
		- INode Υʡ:
		  INode(username) : User(username) = 0N : 1 
		- INode Υ롼:
		  INode(groupname) : Group(groupname) = 0N : 1 
		- ֥ѥ̾ؤ׻
	 ʪ߷פǤѹ
	    °ɲ:
	      DirINode ξ FileInode ξξ
		nlink: , 1
			ϡɥ󥯿ʤϢ֥ѥ̾ؤפο
		generation:  , 1
			ֹ桢ʤ inode ֹ椬Ѥ줿
	      FileINode ξ硢
		filesize: , 1
		checksumType: ʸ, 1
		checksum: ʸ, 1
	    Ϣΰư:
	      DirINode ξ硢
		- ֥ǥ쥯ȥ˽°׻
	      FileINode ξ硢
		- ֥ץꥫνߡ׻

	 ǥΤᡢRDB Ѥ SQL ޤǤϡάǽ
	   checksumType, checksum ϡ̥ơ֥ FileInfo ɤФ

	 Ūˡ°ɲäɤȻפ롣
		desiredCopies: , 1
			Ԥץꥫο
			DirINode ξ FileInode ξξѤ롣
			ǥ쥯ȥξϡľ˺
			ե/ǥ쥯ȥ desiredCopies νͤȤ
			Ȥ롣ǥեȤ 1
		ncopies: , 01
			FileInode ѡ
			ͭ (valid==Ǥ) FileCopy ο (ץꥫο)
			ʪ߷פΤߤѤ롣ƳŪǽ塣

: DirINode (INode Υ֥)
	°:	ʤ
	Ϣ:
		- ֥ǥ쥯ȥ˽°׻
	 ʪ߷פǤѹ
	    DirINode ѻߤINode 礹롣
	    Ϣΰư:
		- ֥ǥ쥯ȥ˽°׻

: FileINode (INode Υ֥)
	°:	filesize: , 1
		checksumType: ʸ, 1
		checksum: ʸ, 1
	Ϣ:	
		- ֥ץꥫνߡ׻
	 ʪ߷פǤѹ
	    FileINode ѻߤINode 礹롣
	    °ΰư:
		FileInode ° INode ݻ롣
		RDB Ѥ SQL ޤǤϡ
		άǽ checksumType, checksum ϡ
		̥ơ֥ FileInfo ˵Ͽ롣
	    Ϣΰư:
		- ֥ץꥫνߡ׻

Ϣ: FileCopy
	°:	inode: , 1 (PK)
		hostname: ʸ [CI], 1 (PK)
	Ϣ:
		- ץꥫν:
		  FileINode(inode) : FileCopy(inode) = 01 : 1N
		- ץꥫݻ:
		  Host(hostname) : FileCopy(hostname) = 1 : 0N
	 ʪ߷פǤѹ
		- ץꥫν:
		  FileINode(inode) : FileCopy(inode) = 01 : 1N
		  
		  INode(inode) : FileCopy(inode) = 01 : 0N
		  Ȥʤ롣
		  FileCopy ¦ 0 ˤʤΤϡINode եʳξ硣

Ϣ: DeadFileCopy
	°:	inode: , 1 (PK)
		igen: , 1 (PK)
		hostname: ʸ [CI], 1 (PK)
	Ϣ:
		- Ťץꥫν:
		  FileINode(inode) : DeadFileCopy(inode) = 01 : 0N
		- Ťץꥫݻ:
		  Host(hostname) : DeadFileCopy(hostname) = 1 : 0N
	 ʪ߷פǤѹ
		- Ťץꥫν:
		  FileINode(inode) : DeadFileCopy(inode) = 01 : 0N
		  
		  INode(inode) : DeadFileCopy(inode) = 01 : 0N
		  Ȥʤ롣

Ϣ: DirEntry
	°:	dirINode: , 1 (PK) (FK)
			dirINode==1  root directory Ȥ롣
		entryName: ʸ, 1 (PK)
		entryINode: , 1 (FK)
			entryINode  褷 1 (root directory) ؤʤ

	Ϣ:
		- ǥ쥯ȥ˽°:
		  DirINode(inode) : DirEntry(dirINode) = 1 : 0N
			DirEntry  0 ȤʤΤ϶ǥ쥯ȥξ硣
		- ѥ̾ؤ
		  DirEntry(entryINode) : INode(inode) = 01 : 1 
			DirEntry  0 ȤʤΤ root directory Τߡ
			hardlink ʤ DirEntry ¦ϡ0N Ȥʤ롣
	 ʪ߷פǤѹ
	    Ϣΰư:
		- ǥ쥯ȥ˽°:
		  DirINode(inode) : DirEntry(dirINode) = 1 : 0N
		  ϡ
		  INode(inode) : DirEntry(dirINode) = 1 : 0N
		  Ȥʤ롣
		  DirEntry  0 ȤʤȤơǥ쥯ȥξ
		  ¾ˡ INode ǥ쥯ȥǤʤ礬롣

: XAttr
        °:   inumber: , 1 (PK)
                attrname: ʸ, 1 (PK)
                attrvalue: Хʥ, 1
        Ϣ:

: XmlAttr
        °:   inumber: , 1 (PK)
                attrname: ʸ, 1 (PK)
                attrvalue: XML, 1
        Ϣ:

TODO: ACL ݡ
