1

テーブルを作っています

モバイルモデル情報

+-------------+-----------------+------+-----+---------+----------------+
| Field       | Type            | Null | Key | Default | Extra          |
+-------------+-----------------+------+-----+---------+----------------+
| ID          | int(5) unsigned | NO   | PRI | NULL    | auto_increment |
| linktospecs | varchar(255)    | YES  |     | NULL    |                |
| name        | varchar(30)     | NO   | UNI | NULL    |                |
| company     | varchar(20)     | NO   |     | NULL    |                |
+-------------+-----------------+------+-----+---------+----------------+
4 rows in set (0.01 sec)

この表では、どの携帯電話メーカーの各携帯電話も 1 回だけ表示され、それに加えて、メーカー名や仕様への公式リンクなどのその他の情報が表示されます。今思いつくのはそれだけです。

私が望むのは、name列は本質的に一意であるため (同じモバイル モデルの 2 つの行はばかげているでしょう)、それを使用してインデックスを作成できるようにしたいということです。単純に、私のアプリケーションでは、ユーザーがモバイル名を検索するときに、この列を使用してname、このテーブルから他のすべての列を取得します。

しかし、多くの例で、単純な主キーとして保持するために自動インクリメントする余分な単純な ID 列を使用する人を見てきました。それで、私の質問は、ID列を保持する必要がありますか、それともこのテーブルを使用するには一意のname列で十分ですか? データベースと SQL は初めてです。

4

4 に答える 4

2

ID 列を主キーとして使用することは、決して変更されないため、常に良い考えです。電話の名前を変更する必要があり、名前が主キーである場合、主キーの値が存在しないため、その電話への以前の参照はすぐに機能しなくなります。一方、それぞれに一意の ID がある場合は、ID に影響を与えずに名前を変更でき、以前のすべての参照は引き続き有効です。

また、2 つの異なる会社が同じ名前の電話を発表する可能性もあります。その場合、名前が主キーである場合、そのうちの 1 つにしか情報を保存できません。

于 2013-08-28T06:02:35.967 に答える
0

私の意見では、ID列を使用する方が良いでしょう。近い将来、外部キー(他のテーブルに表示されるテーブルの主キー)の概念を含む機能を追加したい場合、使用IDすると、タスクと労力が単純になる可能性がありますさまざまな側面(電話の名前を変更する必要があり、名前が主キーである場合、主キーの値が存在しないため、その電話への以前の参照はすぐに機能しなくなります)

于 2013-08-28T06:04:07.303 に答える