static char *base36enc(long unsigned int value) {
char base36[36] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
/* log(2**64) / log(36) = 12.38 => max 13 char + '\0' */
char buffer[14];
unsigned int offset = sizeof(buffer);
buffer[--offset] = '\0';
do {
buffer[--offset] = base36[value % 36];
} while (value /= 36);
return strdup(&buffer[offset]); // warning: this must be free-d by the user
}
static long unsigned int base36dec(const char *text) {
return strtoul(text, NULL, 36);
}
Types of Table
Order |
Code |
Types |
Purpose |
Tables |
Views
|
1 |
I |
Identity |
Identity Tables |
M00TI00X00 ~ MZZTIZZX00 |
M00VI00X00 ~ MZZVIZZXZZ
|
2 |
M |
Metadata |
Metadata Tables |
M00TM00X00 ~ MZZTMZZX00 |
M00VM00X00 ~ MZZVMZZXZZ
|
3 |
C |
Collection |
Collection Tables |
M00TS00X00 ~ MZZTCZZX00 |
M00VS00X00 ~ MZZVCZZXZZ
|
4 |
E |
Entries |
Entries Tables |
M00TE00X00 ~ MZZTEZZX00 |
M00VE00X00 ~ MZZVEZZXZZ
|
5 |
J |
Join |
Join Tables n - n |
M00JX00X00 ~ MZZJXZZXZZ |
Z=[0-Z]{1},X=[ACEILMV]{1}
|
6 |
A |
Audit |
Audit Tables |
M00TA00X00 ~ MZZTAZZX00 |
M00VA00X00 ~ MZZVAZZXZZ
|
7 |
L |
Local |
Local Tables |
M00TL00X00 ~ MZZTLZZX00 |
M00VL00X00 ~ MZZVLZZXZZ
|
8 |
V |
Versions |
Versions Tables |
M00TV00X00 ~ MZZTVZZX00 |
M00VV00X00 ~ MZZVVZZXZZ
|
Nomenclature
Templates Tables
[M]{1}────────────────M ─┐
│
[0-9A-Z]{2}───────────00─┼─M00T─┐
│ │
[J|T|V]{1}────────────T ─┘ │
│
[A|C|E|I|L|M|V]{1}────M ─┐ │
├─M00 ─┼─M00TM00X00
[0-9A-Z]{2}───────────00─┘ │
│
[X]{1}────────────────X ─┐ │
├─X00 ─┘
[0-9A-Z]{2}───────────00─┘
|
Versions Tables
[M]{1}───────M ─┐
│
[0-9A-Z]{2}──00─┼─M00T─┐
│ │
[J|T|V]{1}───T ─┘ │
│
[V]{1}───────V ─┐ │
├─V00 ─┼─M00TV00X00
[0-9A-Z]{2}──00─┘ │
│
[X]{1}───────X ─┐ │
├─X00 ─┘
[0]{2}───────00─┘
|
Audit Tables
[M]{1}───────M ─┐
│
[0-9A-Z]{2}──00─┼─M00T─┐
│ │
[J|T|V]{1}───T ─┘ │
│
[A]{1}───────A ─┐ │
├─A00 ─┼─M00TA00X00
[0-9A-Z]{2}──00─┘ │
│
[X]{1}───────X ─┐ │
├─X00 ─┘
[0]{2}───────00─┘
|
Entries Tables
[M]{1}───────M ─┐
│
[0-9A-Z]{2}──00─┼─M00T─┐
│ │
[J|T|V]{1}───T ─┘ │
│
[E]{1}───────E ─┐ │
├─E00 ─┼─M00TE00X00
[0-9A-Z]{2}──00─┘ │
│
[X]{1}───────X ─┐ │
├─X00 ─┘
[0]{2}───────00─┘
|
Identity Tables
[M]{1}───────M ─┐
│
[0-9A-Z]{2}──00─┼─M00T─┐
│ │
[J|T|V]{1}───T ─┘ │
│
[I]{1}───────I ─┐ │
├─I00 ─┼─M00TI00X00
[0-9A-Z]{2}──00─┘ │
│
[X]{1}───────X ─┐ │
├─X00 ─┘
[0]{2}───────00─┘
|
Local Tables
[M]{1}───────M ─┐
│
[0-9A-Z]{2}──00─┼─M00T─┐
│ │
[J|T|V]{1}───T ─┘ │
│
[L]{1}───────L ─┐ │
├─L00 ─┼─M00TL00X00
[0-9A-Z]{2}──00─┘ │
│
[X]{1}───────X ─┐ │
├─X00 ─┘
[0]{2}───────00─┘
|
Metadata Tables
[M]{1}───────M ─┐
│
[0-9A-Z]{2}──00─┼─M00T─┐
│ │
[J|T|V]{1}───T ─┘ │
│
[M]{1}───────M ─┐ │
├─M00 ─┼─M00TM00X00
[0-9A-Z]{2}──00─┘ │
│
[X]{1}───────X ─┐ │
├─X00 ─┘
[0]{2}───────00─┘
|
Collection Tables
[M]{1}───────M ─┐
│
[0-9A-Z]{2}──00─┼─M00T─┐
│ │
[J|T|V]{1}───T ─┘ │
│
[C]{1}───────C ─┐ │
├─C00 ─┼─M00TC00X00
[0-9A-Z]{2}──00─┘ │
│
[X]{1}───────X ─┐ │
├─X00 ─┘
[0]{2}───────00─┘
|
Join Tables
[M]{1}──────────────M ─┐
│
[0-9A-Z]{2}─────────00─┼─M00J─┐
│ │
[J|T|V]{1}──────────J ─┘ │
│
[A|C|E|I|L|M|V]{1}──E ─┐ │
├─E00 ─┼─M00JE00E11
[0-9A-Z]{2}─────────00─┘ │
│
[A|C|E|I|L|M|V]{1}──E ─┐ │
├─E11 ─┘
[0]{2}──────────────00─┘
|
Materialized View
[M]{1}──────────────M ─┐
│
[0-9A-Z]{2}─────────00─┼─M00V─┐
│ │
[J|T|V]{1}──────────V ─┘ │
│
[A|C|E|I|L|M|V]{1}──E ─┐ │
├─E00 ─┼─M00VE00X00
[0-9A-Z]{2}─────────00─┘ │
│
[X]{1}──────────────X ─┐ │
├─X00 ─┘
[0-9A-Z]{2}─────────00─┘
|
Data Size Convention
;data size convention (where n is integer number)
STRING : 1 + 2 + 4 + 08 + 16 + 32 + 64 + 128 + 256 + 2^n
NUMBER : 3 + 6 + 9 + 12 + 15 + 18 + 21 + 024
DATE : yyyy-MM-dd | yyyy-MM-dd'T'HH:mm:ss
BOOLEAN : 0 + 1
Id Field Convention
JavaScript
var Chorke=Chorke||(function(me){
me = {
$class : 'Chorke',
$package : 'Default',
};
return me;
})();
/**
* @public
* @static
*/
;Chorke.Base36||(function($, me, RADIX){
RADIX = 36;
me = {
$package: 'Chorke',
$class : 'Chorke.Base36',
Encode : function(number, base36){
base36 = (number).toString(RADIX)
base36 = base36.toUpperCase()
return base36
},
Decode : function(base36, number){
number = parseInt(base36, RADIX)
return number
}
};
$.Base36 = me;
})(Chorke);
|
/**
* @public
* @static
*/
;Chorke.Severity||(function($, w, me){
me = {
$package: 'Chorke',
$class : 'Chorke.Severity',
Info : function(message){
w.console&&w.console.info(message)
}
};
$.Severity = me;
})(Chorke, window);
/**
* @anonymous
* @static
*/
(function($){
$.Severity.Info($.Base36.Encode(123456789));
$.Severity.Info($.Base36.Decode("2R4Y"));
})(Chorke);
// Output
// 21I3V9
// 128482
|
Java
public class Base36 {
public static final int RADIX = 36;
public static String encode(int integer) {
String base36 = Integer.toString(integer, RADIX);
return base36.toUpperCase();
}
public static int decode(String base36) {
String lower = base36.toLowerCase();
return Integer.parseInt(lower, RADIX);
}
}
Size Index
Base36 Start |
Base36 End |
Decimal Start |
Decimal End |
No.of Elements |
Usages as ID
|
0 |
z |
0 |
35 |
36 |
type , site , status , group , category
|
10 |
zz |
36 |
1,295 |
1,260 |
type , user , module , table , project
|
100 |
zzz |
1,296 |
46,655 |
45,360 |
type , group , category , subcategory
|
1,000 |
z,zzz |
46,656 |
1,679,615 |
1,632,960 |
user , category , subcategory
|
10,000 |
zz,zzz |
1,679,616 |
60,466,175 |
58,786,560 |
category , subcategory , branch
|
100,000 |
zzz,zzz |
60,466,176 |
2,176,782,335 |
2,116,316,160 |
user , admin , manager , executive
|
1,000,000 |
z,zzz,zzz |
2,176,782,336 |
78,364,164,095 |
76,187,381,760 |
oauth , client , commit , invoice
|
10,000,000 |
zz,zzz,zzz |
78,364,164,096 |
2,821,109,907,455 |
2,742,745,743,360 |
user , civic , staff , visa , passport
|
100,000,000 |
zzz,zzz,zzz |
2,821,109,907,456 |
101,559,956,668,415 |
98,738,846,760,960 |
cheque , invoice , certificate
|
1,000,000,000 |
z,zzz,zzz,zzz |
101,559,956,668,416 |
3,656,158,440,062,975 |
3,554,598,483,394,560 |
user , account , wallet , qrcode
|
Base Index
Index |
Binary |
Char
|
|
Index |
Binary |
Char
|
|
Index |
Binary |
Char
|
|
Index |
Binary |
Char
|
0 |
000000 |
0 |
16 |
010000 |
G |
32 |
100000 |
W |
48 |
110000 |
m
|
1 |
000001 |
1 |
17 |
010001 |
H |
33 |
100001 |
X |
49 |
110001 |
n
|
2 |
000010 |
2 |
18 |
010010 |
I |
34 |
100010 |
Y |
50 |
110010 |
o
|
3 |
000011 |
3 |
19 |
010011 |
J |
35 |
100011 |
Z |
51 |
110011 |
p
|
4 |
000100 |
4 |
20 |
010100 |
K |
36 |
100100 |
a |
52 |
110100 |
q
|
5 |
000101 |
5 |
21 |
010101 |
L |
37 |
100101 |
b |
53 |
110101 |
r
|
6 |
000110 |
6 |
22 |
010110 |
M |
38 |
100110 |
c |
54 |
110110 |
s
|
7 |
000111 |
7 |
23 |
010111 |
N |
39 |
100111 |
d |
55 |
110111 |
t
|
8 |
001000 |
8 |
24 |
011000 |
O |
40 |
101000 |
e |
56 |
111000 |
u
|
9 |
001001 |
9 |
25 |
011001 |
P |
41 |
101001 |
f |
57 |
111001 |
v
|
10 |
001010 |
A |
26 |
011010 |
Q |
42 |
101010 |
g |
58 |
111010 |
w
|
11 |
001011 |
B |
27 |
011011 |
R |
43 |
101011 |
h |
59 |
111011 |
x
|
12 |
001100 |
C |
28 |
011100 |
S |
44 |
101100 |
i |
60 |
111100 |
y
|
13 |
001101 |
D |
29 |
011101 |
T |
45 |
101101 |
j |
61 |
111101 |
z
|
14 |
001110 |
E |
30 |
011110 |
U |
46 |
101110 |
k |
62 |
111110 |
_
|
15 |
001111 |
F |
31 |
011111 |
V |
47 |
101111 |
l |
63 |
111111 |
.
|
References