テーブル作成プロトコル


1. [必須] はいまたはいいえの概念を表すフィールドは is_xxx の方法で名前を付ける必要があり、データ型は unsigned tinyint (1 ははいを意味し、0 はいいえを意味します) この規則も適用されます。 odps 施工面に。

注: フィールドが負ではない数値の場合、符号なしである必要があります。


2. [必須] テーブル名とフィールド名には小文字または数字を使用する必要があります。数字で始めることや、 数字のみを使用することは禁止されています。 2 つのアンダースコアの間。データベースのフィールド名の変更は、プレリリースが不可能なため非常にコストがかかり、そのためフィールド名を慎重に検討する必要があります。

正の例: getter _ admin , task _ config , level 3_ name

逆の例: GetterAdmin , taskConfig , level _3_ name


#3. [必須] テーブル名には複数の名詞を使用しないでください。

注: テーブル名はテーブル内のエンティティの内容のみを表す必要があり、エンティティの数を表すべきではありません。対応する DO クラス名も単数形 形式です。 、これは表現習慣と一致しています。


#4. [必須] desc、range、match、delayed などの予約語を無効にします。MySQL 公式の予約語を参照してください。


5. [必須] 一意のインデックス名は uk _field name で、共通インデックス名は idx _field name です。

説明: uk _ は一意のキー、idx _ はインデックスの省略形です。


#6. 【必須】 10 進数型は 10 進数で、float、double は禁止です。

注: float と double を格納する場合、精度が失われるという問題があり、値を比較するときに誤った結果が得られる可能性が高くなります。保存されるデータ範囲が 10 進数の範囲を超える場合は、データを整数と小数に分割して別々に保存することをお勧めします。


#7. 【必須】格納する文字列の長さがほぼ等しい場合は、char 固定長文字列型を使用してください。


8. [必須] varchar は可変長文字列です。事前に割り当てられる記憶領域はありません。長さは 5000 を超えてはいけません。記憶域の長さ

の場合、がこの値より大きい場合は、他のフィールドのインデックス作成効率への影響を避けるために、フィールド タイプをテキストとして定義し、別のテーブルを作成し、対応する主キーを使用します。

9. [必須] テーブルには、id、gmt_create、gmt_modified の 3 つのフィールドが必要です。

注:

id ​​は主キーである必要があり、型は符号なし bigint、単一テーブルの自動インクリメント、ステップ サイズは 1 です。 gmt _create と

gmt _modified の型はすべて date_time 型です。

#10. 【推奨事項】 テーブル名は「業務名_テーブルの機能」とするのがベストです。

良い例: Tiger _ task / Tiger _ Reader / mpp _ config


11. [推奨] ライブラリ名とアプリケーション名は次のようになります。できるだけ一貫性のあるものにしてください。


#12. [推奨事項] フィールドの意味を変更したり、フィールドにステータスを追加したりする場合は、フィールドのコメントを適時に更新する必要があります。


#13. [推奨事項] パフォーマンスを向上させるためにフィールドに適切な冗長性を許可しますが、データの同期を考慮する必要があります。冗長なフィールドは次のとおりです。

1) 頻繁に変更されないフィールド。

2) これは varchar の超長いフィールドではなく、ましてやテキスト フィールドでもありません。 良い例: 製品カテゴリ名は頻繁に使用され、フィールドの長さは短く、名前は基本的に変更されません。カテゴリ名を関連するテーブルに重複して格納して

関連するクエリ。


14. [推奨事項] データベースとテーブルのシャーディングは、単一テーブルの行数が 500 万を超える場合、または単一テーブルの容量を超える場合にのみ推奨されます。 2GB。

注:

データ量が 3 年以内にこのレベルに達しないことが予想される場合は、テーブルを作成するときにデータベースをテーブルに分割しないでください。

15. [参考] 適切な文字ストレージ長は、データベースのテーブル スペースとインデックス ストレージを節約するだけでなく、さらに重要なことに、取得速度を向上させます

肯定的な例: 人の年齢は符号なし tinyint (0 ~ 255 の範囲を示し、人の寿命は 255 歳を超えない); Turtle

は次のようにする必要があります。 smallint ですが、太陽の年齢が int である必要がある場合、すべての星の年齢が合計される場合は、bigint を使用する必要があります。


######