6

私は MSAccess を初めて使用するので、よくわかりません。データベース内のすべてのテーブルに主キーが必要ですか? 次のようなテーブルが 1 つあります。

( http://i108.photobucket.com/albums/n32/lurker3345/ACCESSHELP.png?t=1382688844 )

この場合、すべてのフィールド/列に繰り返し用語があります。すべてのフィールドに主キーを割り当てようとしましたが、繰り返されるフィールドがあるというエラーが返されます。

どうすればいいですか?

4

4 に答える 4

5

厳密に言えば、はい、リレーショナル データベースのすべての行には主キー(一意の識別子) が必要です。手っ取り早い仕事をしているなら、それがなくても済むかもしれません。

内部トラッキング ID

一部のデータベースは、明示的に割り当てない場合、内部で主キーを生成します。すべてのデータベースには、各行を内部的に追跡する何らかの方法が必要です。

ナチュラルキー

自然キーは、各行を一意に識別する意味のあるデータを含む既存のフィールドです。たとえば、チームに割り当てられた人を追跡している場合、「person」テーブルに「employee_id」列があるとします。

代理キー

代理キーは、テーブルに追加する追加の列であり、一意の識別子として任意の値を割り当てるだけです。データベース ( Postgresなど) がそのデータ型をサポートしている場合は、シリアル番号 (1、2、3、…) またはUUIDを割り当てることができます。シリアル番号または UUID の割り当ては非常に一般的であるため、ほぼすべてのデータベース エンジンには、そのような値を自動的に作成して新しい行に割り当てるのに役立つ組み込み機能が用意されています。

私のアドバイス

私の経験では、本格的な長期プロジェクトでは、常に代理キーを使用する必要があります。これまで使用したいと思っていたすべての自然キーは最終的に変更されるためです。姓が変わる(結婚するなど)。会社が別の会社に買収されると、従業員 ID が変更されます。

一方、データの単一バッチを分析して一度だけグラフを作成するなど、簡単で汚い仕事をしていて、データにたまたま自然キーがある場合は、それを使用してください。注意: 1 回限りのジョブは、多くの場合、定期的なジョブになる方法があります。

さらなるアドバイス... 管理外のソースからデータをインポートする場合は、インポートに候補キーが含まれていても、独自の識別子を割り当ててください。

複合キー

一部のデータベース エンジンは、複合キーとも呼ばれる複合キー機能を提供します。複合キーでは、テーブル内の 2 つ以上の列を組み合わせて単一の値を作成します。これらの値は、組み合わせると一意であることが証明されます。たとえば、「person」テーブルでは、「first_name」フィールドと「last_name」フィールド、および「phone_number」フィールドは、一緒に考えると一意になる場合があります。2 人が結婚し、同じ自宅の電話番号を共有し、それぞれが同じ姓を持つ「アレックス」という名前になっている場合を除きます。このような衝突や、意味のあるデータが変更される傾向、およびそのような結合された値を計算するオーバーヘッドのため、特別な状況がない限り、単純な (単一列) キーを使用することをお勧めします。

于 2013-10-25T09:12:06.293 に答える
2

データに主キーとして使用する一意のフィールドが自然にない場合は、「Id」などと呼ばれる自動生成された整数列を追加します。

このページの「データの整理方法」セクションをお読みください。

http://www.htmlgoodies.com/primers/database/article.php/3478051

このページでは、作成方法を示します (「自動番号の主キーを追加する」の下):

http://office.microsoft.com/en-gb/access-help/create-or-remove-a-primary-key-HA010014099.aspx

于 2013-10-25T08:24:17.343 に答える
1

DataAdapter と Currency Manager を使用する場合、更新、追加、および削除をデータベースにプッシュするために、テーブルに主キーが必要です。そうしないと、登録されず、エラーが発生します。

これをTry-Catch-End Tryブロックに追加するまで、それを理解するのに1週間を失いました:「キー」に言及したMsgBox(er.ToString)。そこから、私はそれを理解しました。(NB : VB6 では主キーを持つ必要はありませんでした)

于 2016-10-30T09:08:06.880 に答える
0

通常、主キーがないということは、データの構造が不十分であることを意味します。ただし、そこで要約/集計データを扱っているように見えるので、おそらく問題ではありません。

于 2013-10-25T08:30:57.100 に答える