Locale: Difference between revisions

From Chorke Wiki
Jump to navigation Jump to search
No edit summary
 
(95 intermediate revisions by the same user not shown)
Line 1: Line 1:
<source lang="sql">
<syntaxhighlight lang="c">
CREATE TABLE T01001 (
static char *base36enc(long unsigned int value) {
     code          NUMBER(10) NOT NULL,
    char base36[36] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
     entered      DATE NOT NULL,
     /* log(2**64) / log(36) = 12.38 => max 13 char + '\0' */
     enterer      NUMBER(10) NOT NULL,
    char buffer[14];
     amended     DATE,
    unsigned int offset = sizeof(buffer);
     amender     NUMBER(10)
 
);
    buffer[--offset] = '\0';
</source>
    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);
}
</syntaxhighlight>
 
----
 
{|class="wikitable" style="text-align:center"
|-
!scope="col"| Index !!scope="col"| Binary !!scope="col"| Char
|rowspan="17"|
!scope="col"| Index !!scope="col"| Binary !!scope="col"| Char
|rowspan="17"|
!scope="col"| Index !!scope="col"| Binary !!scope="col"| Char
|rowspan="17"|
!scope="col"| Index !!scope="col"| Binary !!scope="col"| Char
|-
|  0 || 000000 || <code>0</code> || 16 || 010000 || <code>G</code> || 32 || 100000 || <code>W</code> || 48 || 110000 || <code>m</code>
|-
|  1 || 000001 || <code>1</code> || 17 || 010001 || <code>H</code> || 33 || 100001 || <code>X</code> || 49 || 110001 || <code>n</code>
|-
|  2 || 000010 || <code>2</code> || 18 || 010010 || <code>I</code> || 34 || 100010 || <code>Y</code> || 50 || 110010 || <code>o</code>
|-
|  3 || 000011 || <code>3</code> || 19 || 010011 || <code>J</code> || 35 || 100011 || <code>Z</code> || 51 || 110011 || <code>p</code>
|-
|  4 || 000100 || <code>4</code> || 20 || 010100 || <code>K</code> || 36 || 100100 || <code>a</code> || 52 || 110100 || <code>q</code>
|-
|  5 || 000101 || <code>5</code> || 21 || 010101 || <code>L</code> || 37 || 100101 || <code>b</code> || 53 || 110101 || <code>r</code>
|-
|  6 || 000110 || <code>6</code> || 22 || 010110 || <code>M</code> || 38 || 100110 || <code>c</code> || 54 || 110110 || <code>s</code>
|-
|  7 || 000111 || <code>7</code> || 23 || 010111 || <code>N</code> || 39 || 100111 || <code>d</code> || 55 || 110111 || <code>t</code>
|-
|  8 || 001000 || <code>8</code> || 24 || 011000 || <code>O</code> || 40 || 101000 || <code>e</code> || 56 || 111000 || <code>u</code>
|-
|  9 || 001001 || <code>9</code> || 25 || 011001 || <code>P</code> || 41 || 101001 || <code>f</code> || 57 || 111001 || <code>v</code>
|-
| 10 || 001010 || <code>A</code> || 26 || 011010 || <code>Q</code> || 42 || 101010 || <code>g</code> || 58 || 111010 || <code>w</code>
|-
| 11 || 001011 || <code>B</code> || 27 || 011011 || <code>R</code> || 43 || 101011 || <code>h</code> || 59 || 111011 || <code>x</code>
|-
| 12 || 001100 || <code>C</code> || 28 || 011100 || <code>S</code> || 44 || 101100 || <code>i</code> || 60 || 111100 || <code>y</code>
|-
| 13 || 001101 || <code>D</code> || 29 || 011101 || <code>T</code> || 45 || 101101 || <code>j</code> || 61 || 111101 || <code>z</code>
|-
| 14 || 001110 || <code>E</code> || 30 || 011110 || <code>U</code> || 46 || 101110 || <code>k</code> || 62 || 111110 || <code>_</code>
|-
| 15 || 001111 || <code>F</code> || 31 || 011111 || <code>V</code> || 47 || 101111 || <code>l</code> || 63 || 111111 || <code>.</code>
|}
 
==Types==
{|
| valign="top" |
===Data===
<syntaxhighlight lang="sql">
SELECT
    created_at,
    created_by,
    updated_at,
    updated_by,
    version_no,
    id,
    data_type_code,
    data_type_name
FROM
    M00TM00X00
</syntaxhighlight>
 
| valign="top" |
===Error===
<syntaxhighlight lang="sql">
SELECT
    created_at,
    created_by,
    updated_at,
    updated_by,
    version_no,
    id,
    error_type_code,
    error_type_name
FROM
    M00TM01X00
</syntaxhighlight>
 
| valign="top" |
===Mime===
<syntaxhighlight lang="sql">
SELECT
    created_at,
    created_by,
    updated_at,
    updated_by,
    version_no,
    id,
    mime_type_code,
    mime_type_name
FROM
    M00TM##X00
</syntaxhighlight>
|}
 
==Objects==
{|
| valign="top" |
===Tables===
<syntaxhighlight lang="sql">
SELECT
    created_at,
    created_by,
    updated_at,
    updated_by,
    version_no,
    id,
    table_code,
    table_nome,
    data_type_code,
 
 
 
FROM
    M00TM02X00
</syntaxhighlight>
 
| valign="top" |
 
===Forms===
<syntaxhighlight lang="sql">
SELECT
    created_at,
    created_by,
    updated_at,
    updated_by,
    version_no,
    id,
    form_code,
    form_name,
    data_type_code,
    apps_type,
    base_flag,
    base_form
FROM
    M00TM03X00
</syntaxhighlight>
 
| valign="top" |
===Reports===
<syntaxhighlight lang="sql">
SELECT
    created_at,
    created_by,
    updated_at,
     updated_by,
    version_no,
    id,
    report_code,
    report_name,
    data_type_code,
 
 
 
FROM
    M00TM04X00
</syntaxhighlight>
 
| valign="top" |
===Errors===
<syntaxhighlight lang="sql">
SELECT
    created_at,
    created_by,
    updated_at,
    updated_by,
    version_no,
    id,
    error_code,
    error_name,
    error_type_code,
 
 
 
FROM
    M00TM05X00
</syntaxhighlight>
|}
 
==Labels==
{|
| valign="top" |
===Fields===
<syntaxhighlight lang="sql">
SELECT
    created_at,
    created_by,
    updated_at,
    updated_by,
    version_no,
    id,
    field_code,
    table_code,
    field_order,
    field_name
FROM
    M00TM06X00
</syntaxhighlight>
 
| valign="top" |
===Forms===
<syntaxhighlight lang="sql">
SELECT
    created_at,
    created_by,
    updated_at,
    updated_by,
    version_no,
    id,
    label_code,
    form_code,
    label_name,
    label_value
FROM
    M00TM07X00
</syntaxhighlight>
 
| valign="top" |
===Reports===
<syntaxhighlight lang="sql">
SELECT
    created_at,
    created_by,
    updated_at,
    updated_by,
    version_no,
    id,
    label_code,
    report_code,
    label_name,
    label_value
FROM
    M00TM08X00
</syntaxhighlight>
|}
 
==Localizations==
{|
| valign="top" |
===Languages===
<syntaxhighlight lang="sql">
SELECT
    created_at,
    created_by,
    updated_at,
    updated_by,
    version_no,
    id,
    lingo_code,
    iso_alpha2_lingo_code,
    iso_alpha3_lingo_code,
 
 
 
 
 
    lingo_name
FROM
    M00TL00X00
</syntaxhighlight>
 
| valign="top" |
===Countries===
<syntaxhighlight lang="sql">
SELECT
    created_at,
    created_by,
    updated_at,
    updated_by,
    version_no,
    id,
    country_code,
    iso_alpha2_country_code,
    iso_alpha3_country_code,
    longitude,
    latitude,
    altitude,
 
 
    country_name
FROM
    M00TL01X00
</syntaxhighlight>
 
| valign="top" |
 
===Currencies===
<syntaxhighlight lang="sql">
SELECT
    created_at,
    created_by,
    updated_at,
    updated_by,
    version_no,
    id,
    notes_code,
    iso_alpha3_notes_code,
    iso_alpha3_state_code,
    iso_numeric_code,
    official_flag,
    decimal_point,
    notes_symbol,
    crypto_flag,
    notes_name
FROM
    M00TL02X00
</syntaxhighlight>
|}
 
==Translations==
{|
| valign="top" |
===Tables===
<syntaxhighlight lang="sql">
SELECT
    created_at,
    created_by,
    updated_at,
    updated_by,
    version_no,
    id,
    translated_code,
    table_code,
    field_code,
    field_value,
    iso_alpha2_lingo_code,
    iso_alpha2_state_code,
    translated_value
FROM
    M00TL03X00
</syntaxhighlight>
 
| valign="top" |
===Forms===
<syntaxhighlight lang="sql">
SELECT
    created_at,
    created_by,
    updated_at,
    updated_by,
    version_no,
    id,
    translated_code,
    form_code,
    label_code,
 
    iso_alpha2_lingo_code,
    iso_alpha2_state_code,
    translated_value
FROM
    M00TL04X00
</syntaxhighlight>
 
| valign="top" |
===Reports===
<syntaxhighlight lang="sql">
SELECT
    created_at,
    created_by,
    updated_at,
    updated_by,
    version_no,
    id,
    translated_code,
    report_code,
    label_code,
 
    iso_alpha2_lingo_code,
    iso_alpha2_state_code,
    translated_value
FROM
    M00TL05X00
</syntaxhighlight>
 
| valign="top" |
===Errors===
<syntaxhighlight lang="sql">
SELECT
    enter_at,
    enter_by,
    amend_at,
    amend_by,
    revision,
    id,
    translated_code,
    error_code,
 
 
    iso_alpha2_lingo_code,
     iso_alpha2_state_code,
     translated_value
FROM
    M00TL06X00
</syntaxhighlight>
|}
 
==Proposed==
{|
| valign="top" |
sense of old user
──────────────────────────
id     : Base36Id
revision: Number
enter_at: DateTime
enter_by: Base36Id
enter_on: Base36Id
amend_at: DateTime
amend_by: Base36Id
amend_on: Base36Id
trash_at: DateTime
code    : Base36Code
 
| valign="top" |
sense of gui user
──────────────────────────
id      : Base36Id
revision : Number
create_at: DateTime
create_by: Base36Id
create_on: Base36Id
update_at: DateTime
update_by: Base36Id
update_on: Base36Id
delete_at: DateTime
code     : Base36Code
 
| valign="top" |
sense of sql user
──────────────────────────
id        : Base36Id
revision  : Number
inserted_at: DateTime
inserted_by: Base36Id
inserted_on: Base36Id
updated_at : DateTime
updated_by : Base36Id
updated_on : Base36Id
deleted_at : DateTime
code      : Base36Code
 
| valign="top" |
'''√ sense of any user'''
──────────────────────────
id        : '''Base36Id'''
version_no: '''Number'''
created_at: '''DateTime'''
created_by: '''Base36Id'''
created_on: '''Base36Id'''
updated_at: '''DateTime'''
updated_by: '''Base36Id'''
updated_on: '''Base36Id'''
deleted_at: '''DateTime'''
code     : '''Base36Code'''
 
|-
| colspan="4" |
----
|-
| valign="top" colspan="2" |
<syntaxhighlight lang="json">
{
  "properties":{},        // more generic properties
  "extendedProperties":{}, // less generic properties
  "externalProperties":{}, // peer partner properties
  "inherentProperties":{}, // json scratch properties
  "coherentProperties":{}  // json ordered properties
}
</syntaxhighlight>
 
| valign="top" colspan="2" |
 
|}
----
We are thinking about '''unstructured document''' data using JSON or JSON Binary Data. It's more important to us. It's never be wise as well make another layer of complexity when we are trying to handle lot of fields in single Database Table. For such cases we need replace multiple columns by using JSON or JSON Binary Data.
 
==References==
{|
| valign="top" |
* [https://dbpedia.org/page/ISO/IEC_5218 Locale » ISO/IEC_5218 » Human Sexes]
* [https://help.sap.com/docs/SAP_BUSINESSOBJECTS_BUSINESS_INTELLIGENCE_PLATFORM/09382741061c40a989fae01e61d54202/46758c5e6e041014910aba7db0e91070.html Locale » List and their dominant]
* [https://saimana.com/list-of-country-locale-code/ Locale » List of Country Codes]
 
| valign="top" |
 
| valign="top" |
 
|-
| colspan="3" |
----
|-
| valign="top" |
* [https://programmer.group/oracle-to-mysql-database-migration-primary-key-generation-policy-replacement.html Using MySQL table to simulate Oracle Sequence]
* [https://coderanch.com/t/573996/databases/SequenceGenerator-MySql-Database <code>@SequenceGenerator</code> for MySql Database]
* [https://docs.liquibase.com/change-types/community/create-sequence.html#:~:text=Database%20support Create Sequence Supported Database]
* [https://danielmiessler.com/study/difference-between-uri-url/ Difference Between a URI and a URL]
* [https://www.englishclub.com/grammar/prepositions-at-in-on-time.htm Prepositions of Time - at, in, on]
* [https://en.wikibooks.org/wiki/Java_Persistence/Inheritance JPA Inheritance]
* [https://en.wikipedia.org/wiki/Base64 Base64]
* [https://en.wikipedia.org/wiki/Base36 Base36]
* [https://en.wikipedia.org/wiki/Base32 Base32]
* [https://www.dbunit.org/howto.html DBUnit]
 
| valign="top" |
* [[PostgreSQL#Encode.2FDecode|PostgreSQL]]
* [[MapStruct]]
* [[Liquibase]]
* [[Lombok]]
* [[HTTPie]]
* [[CURL]]
* [[JPA#Sequence_Style|JPA]]
 
| valign="top" |
 
|}

Latest revision as of 20:43, 22 April 2024

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);
}

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 .

Types

Data

SELECT
    created_at,
    created_by,
    updated_at,
    updated_by,
    version_no,
    id,
    data_type_code,
    data_type_name
FROM
    M00TM00X00

Error

SELECT
    created_at,
    created_by,
    updated_at,
    updated_by,
    version_no,
    id,
    error_type_code,
    error_type_name
FROM
    M00TM01X00

Mime

SELECT
    created_at,
    created_by,
    updated_at,
    updated_by,
    version_no,
    id,
    mime_type_code,
    mime_type_name
FROM
    M00TM##X00

Objects

Tables

SELECT
    created_at,
    created_by,
    updated_at,
    updated_by,
    version_no,
    id,
    table_code,
    table_nome,
    data_type_code,



FROM
    M00TM02X00

Forms

SELECT
    created_at,
    created_by,
    updated_at,
    updated_by,
    version_no,
    id,
    form_code,
    form_name,
    data_type_code,
    apps_type,
    base_flag,
    base_form
FROM
    M00TM03X00

Reports

SELECT
    created_at,
    created_by,
    updated_at,
    updated_by,
    version_no,
    id,
    report_code,
    report_name,
    data_type_code,



FROM
    M00TM04X00

Errors

SELECT
    created_at,
    created_by,
    updated_at,
    updated_by,
    version_no,
    id,
    error_code,
    error_name,
    error_type_code,



FROM
    M00TM05X00

Labels

Fields

SELECT
    created_at,
    created_by,
    updated_at,
    updated_by,
    version_no,
    id,
    field_code,
    table_code,
    field_order,
    field_name
FROM
    M00TM06X00

Forms

SELECT
    created_at,
    created_by,
    updated_at,
    updated_by,
    version_no,
    id,
    label_code,
    form_code,
    label_name,
    label_value
FROM
    M00TM07X00

Reports

SELECT
    created_at,
    created_by,
    updated_at,
    updated_by,
    version_no,
    id,
    label_code,
    report_code,
    label_name,
    label_value
FROM
    M00TM08X00

Localizations

Languages

SELECT
    created_at,
    created_by,
    updated_at,
    updated_by,
    version_no,
    id,
    lingo_code,
    iso_alpha2_lingo_code,
    iso_alpha3_lingo_code,





    lingo_name
FROM
    M00TL00X00

Countries

SELECT
    created_at,
    created_by,
    updated_at,
    updated_by,
    version_no,
    id,
    country_code,
    iso_alpha2_country_code,
    iso_alpha3_country_code,
    longitude,
    latitude,
    altitude,


    country_name
FROM
    M00TL01X00

Currencies

SELECT
    created_at,
    created_by,
    updated_at,
    updated_by,
    version_no,
    id,
    notes_code,
    iso_alpha3_notes_code,
    iso_alpha3_state_code,
    iso_numeric_code,
    official_flag,
    decimal_point,
    notes_symbol,
    crypto_flag,
    notes_name
FROM
    M00TL02X00

Translations

Tables

SELECT
    created_at,
    created_by,
    updated_at,
    updated_by,
    version_no,
    id,
    translated_code,
    table_code,
    field_code,
    field_value,
    iso_alpha2_lingo_code,
    iso_alpha2_state_code,
    translated_value
FROM
    M00TL03X00

Forms

SELECT
    created_at,
    created_by,
    updated_at,
    updated_by,
    version_no,
    id,
    translated_code,
    form_code,
    label_code,

    iso_alpha2_lingo_code,
    iso_alpha2_state_code,
    translated_value
FROM
    M00TL04X00

Reports

SELECT
    created_at,
    created_by,
    updated_at,
    updated_by,
    version_no,
    id,
    translated_code,
    report_code,
    label_code,

    iso_alpha2_lingo_code,
    iso_alpha2_state_code,
    translated_value
FROM
    M00TL05X00

Errors

SELECT
    enter_at,
    enter_by,
    amend_at,
    amend_by,
    revision,
    id,
    translated_code,
    error_code,


    iso_alpha2_lingo_code,
    iso_alpha2_state_code,
    translated_value
FROM
    M00TL06X00

Proposed

sense of old user
──────────────────────────
id      : Base36Id
revision: Number
enter_at: DateTime
enter_by: Base36Id
enter_on: Base36Id
amend_at: DateTime
amend_by: Base36Id
amend_on: Base36Id
trash_at: DateTime
code    : Base36Code
sense of gui user
──────────────────────────
id       : Base36Id
revision : Number
create_at: DateTime
create_by: Base36Id
create_on: Base36Id
update_at: DateTime
update_by: Base36Id
update_on: Base36Id
delete_at: DateTime
code     : Base36Code
sense of sql user
──────────────────────────
id         : Base36Id
revision   : Number
inserted_at: DateTime
inserted_by: Base36Id
inserted_on: Base36Id
updated_at : DateTime
updated_by : Base36Id
updated_on : Base36Id
deleted_at : DateTime
code       : Base36Code
√ sense of any user
──────────────────────────
id        : Base36Id
version_no: Number
created_at: DateTime
created_by: Base36Id
created_on: Base36Id
updated_at: DateTime
updated_by: Base36Id
updated_on: Base36Id
deleted_at: DateTime
code      : Base36Code

{
  "properties":{},         // more generic properties
  "extendedProperties":{}, // less generic properties
  "externalProperties":{}, // peer partner properties
  "inherentProperties":{}, // json scratch properties
  "coherentProperties":{}  // json ordered properties
}

We are thinking about unstructured document data using JSON or JSON Binary Data. It's more important to us. It's never be wise as well make another layer of complexity when we are trying to handle lot of fields in single Database Table. For such cases we need replace multiple columns by using JSON or JSON Binary Data.

References