2011-08-12 9 views
5

多くの関連テーブルを持つMySQLデータベースを構築しています。私はユニークで自動インクリメントのプライマリキーを作成し、そのプライマリキーを関連テーブルの外部キーとして参照できることを知っています。私の質問は、プライマリ/外部キーのデータ型(int、varcharなど)のベストプラクティスです。私はこの権利を初めて得ることを確かめたい。MySQLのリレーショナルテーブルとプライマリキーのデータ型

は、MySQLの最も一般的に使用されるデータ型で

答えて

10

がINT UNSIGNEDです、ありがとうございました。これは4バイトの長さで、大部分のアプリケーションでは十分以上の40億までの数値を格納できます。 BIGINT(8B - 18446744073709551615の範囲)を使用するのは、通常、アプリケーションを使い始めたばかりのときです。 INTプライマリ・キーでデータベースが大きくなりすぎる前に、他の問題の解決に役立つよう、プロフェッショナルなDBAを採用する必要があります。

GUID型の主キーを使用すると、CHARまたはBINARYデータ型を使用できます。このようなキーを使用すると、複数のデータベースインスタンス間でデータを分割しやすくなりますが、MySQLでは複数のマスターレプリケーションがよく見られます。

InnoDBテーブルを使用する場合、PKは特定のテーブルで作成された他のすべてのインデックスの最後の列であることを忘れないでください。これにより、PKに対して合理的に短いデータ型を使用することが重要になります(やはり4B INTは通常、うまく機能します)。

+1

PKはInnoDBの任意のセカンダリインデックスの** last **カラムです。 –

+0

確かに、あなたは正しいと思われます。http://www.bigdbahead.com/?p=150 – Mchl

+0

Intは4バイトであれば正常に動作するはずです。フィールドに使用する最大長は何ですか? – drpcken

関連する問題