7

次の列を含むテーブルfooがあります

create table foo (
id integer not null auto_increment unique,
name varchar(255),
desc varchar(255),
modified_time datetime not null,
type tinyint(1)
)

すべての列の順序付け規則に従うためのベストプラクティスはありますか(たとえば、アルファベット順であるか、上部の列と下部の残りの列がnullでない)

4

6 に答える 6

3

確かに主キーが最初です。
その列の名前は通常、tablename _id(従来の)または単に「id」(railsなどのフレームワークで推奨されます)です。

使用する場合は、通常、次に名前/説明フィールドがあります。

私はその後に外部キーを置く傾向があります(最初に親、その後に子供)。それらは開発中により重要になる傾向があるためです。

次に、住所行、都市、州、郵便番号などの他のデータをグループ化します。

他のルールが当てはまらない場合は、可視性を高めるために、必須フィールドをより高い位置に配置する傾向があります。

タイムスタンプ(created_on、updated_on、removed_onなどの一部/すべて)は通常最後になります

したがって、あなたの例では、実際に次のようにします。

create table foo (
id integer not null auto_increment unique,
name varchar(255),
type tinyint(1),
desc varchar(255),
modified_time datetime not null
)

注-Kolinkが指摘したように、descは降順を意味する予約語であるため、descではなくdescriptionを使用します。order desc

しかし...大きな免責事項...

テーブルが時間の経過とともに変化し(つまり、実世界)、既存の本番データがある場合、フィールドは最初に「計画された」ように順序付けられません。これは、エクスポートと再インポートによって回避できますが、多くの場合、順序付けはプログラマーの便宜のための最初の作成の慣例であり、それだけであるということを受け入れるのが最善です。

ここでのもう1つの人気のあるトピックは、列名の命名規則です。それはまったく別のトピックですが、強制されない限り省略しないでくださいと言って、つま先を傾けます!

于 2011-10-29T12:39:11.077 に答える
2

本当の慣習がないだけでなく、それについて考えないのが最善です。たとえば、挿入クエリでは、すべてのフィールドを更新することが想定されている場合、フィールド名が指定されないことがあります。ただし、想定される順序で値を指定する必要があります。これはエラーが発生しやすいです。したがって、それについて考える最良の方法は、「これらの列はこのテーブルに特定の順序で存在しない」ということです。

于 2011-10-29T12:40:45.567 に答える
0

いいえ、そうではありません。柔軟性があるので、好きなように列を並べ替えることができます。

主な慣例はprimary_key、テーブルの最初の列が自分であることを確認することだと思います。

于 2011-10-29T12:36:28.690 に答える
0

私は個人的にそのような慣習を聞いたり見たりしたことがありません。データベース列に使用される唯一の規則は、通常、命名規則(多くの場合、組織ごとに異なります)とデータ型のマッピングです。

ただし、規則は単にそれらが何であるかです。したがって、列をアルファベット順に並べ替えるのが適切だと思われる場合は、そうしてください。

于 2011-10-29T12:38:19.580 に答える
0

それは本当に重要ではなく、味の問題だと思います。

頻繁なクエリで使用するのと同じ順序の列をインデックスで使用していることを確認する必要がありますが、それだけです。

于 2011-10-29T12:38:48.937 に答える
0

私の知る限り、ありません。私は個人的に、すべてのテーブルの前に名前/説明(ユーザーのユーザー名、製品の製品名)が続くはずのプライマリ(多くの場合代理)キーを配置することを好みます(関連する一意の説明的な名前フィールドがある場合)。次に、論理親(オーダーラインのorderid)への外部キー(存在する場合)。その後、私は自分に最も適した方法でそれらを注文し、多くの場合、関連するフィールド(lastEditDateとlastEditedByを並べてグループ化します)をグループ化します。列をアルファベット順に並べる理由はわかりません。

于 2011-10-29T12:39:32.317 に答える