2011-12-03 16 views
7

私は新しいシステムを構築しています(ランプ - Ubuntuのサーバーは、MySQL 5.5 PHP 5.3、apacheの2、Redisの)データベース列と外部キーの正規

(バージョン2.0のように)私の会社のためには、私はそれを作りたいですそれをより良くする。

私はinnodbを使いたいと思います。列と外部キーの名前付けに標準があるかどうかを知りたいのですが。例えば

:あなたは区別するために、その非常に簡単に参加残っていますが、長い名前を持っている場合は、SQLを書くのは痛みを伴うことができ

table_a 
table_a_id 
table_a_name 
etc... 

この方法。

table_a 
id 
name 
etc... 

このように、テーブルは非常にわかりやすいですが、参加を辞めるたびにエイリアスまたはテーブル名を使用する必要があります。

は、データベースの正規化のdatabase.table.column部分を指定していますか?

+2

完全に個人的な質問ですが、 –

答えて

11

データベース、テーブル、列、キー、外部キーの命名規則は、データベースの正規化とは関係ありません。

でも、どこでも同じ命名規則の構造を使用することをおすすめします。すべての私の名前はかなり標準的な、単一の単語であるか、それがアンダースコアで区切られたフレーズであれば、数字も特別な文字でもありません。

(そのレアあなたが唯一の1デシベル、1列と1行で1つのテーブルを持っている)の列、キーおよびFK(番号付きを除く)のために、私は常にplurialsを使用するのと同じで、ここで私は何をすべきかです:

databases: companies 
tables: clients, clients_products, products 
column: id, name, address, city 
key: name 
unique key: name 

この方法でデータを照会すると、リクエストした内容や探している内容が非常に明確になります。

0

は、データベースの正規化のdatabase.table.column部分を指定していますか?

いいえ曖昧に言えば、正規化は、属性間の特定の種類の依存関係を特定することに基づいてテーブルを再構築することによって、データの完全性を向上させることに関係しています。

テーブルとカラムの名前はAPIです。

ISO 11179、情報技術 - メタデータレジストリ(MDR)は、レジストリメタデータを表現するための国際規格です。テーブルや列ではなくセマンティクスを対象としていますが、多くのデータベース設計者は、テーブルや列の名前を付けるためのガイドとして使用しています。大規模な組織では、それは本当に貴重です。 (機能的依存関係、正規化の部分です)

テーブル名とオブジェクトクラスの違いを調べると便利でしょう。 (オブジェクトクラスは、オブジェクト指向プログラミングとは何の関係もなく、ISO 11179の技術用語です。)

A review copy of part 5 (PDF),命名と識別の原則はオンラインで入手できます。 Wikipediaは、より永続的な参照かもしれません。 (そうではないかもしれません)

関連する問題