-- The table that holds characters (88,053 of them as of now). -- The 'int' type holds up to 2,147,483,647 rows, or 0x7FFFFFFF. -- We only need up to 0x000FFFFF right *now* but I doubt Unicode -- will *ever* hit two billion characters. Not for a hundred -- years, at least... probably... anyway, the *decimal* codepoint -- is the primary key because it's controllable; hexcode is just -- along for the index ride. create table codepoint ( deccode int not null primary key, hexcode varchar(16), sjis varchar(16), descr varchar(255), pron varchar(255), def varchar(255), combiner char(1), index idx1 (hexcode) ); -- The table holding code-block groupings (153 of them as of now). create table block ( start int not null, end int not null, name varchar(255), unique idx1 (start, end) );