1

宿題として、DB のテーブルを作成するように依頼されました。このテーブルは、デパートの支店に対応しています。このテーブルには、次の情報が含まれている必要があります。

CREATE TABLE STORE
(

id_store varchar (50),
name_store varchar (50),
city varchar (50),
country varchar (50),
region varchar (50)
);

私の質問は、都市、国、地域のフィールドが必要ですか、それとも主キー id_state の分解によってその情報が提供されるパターンを設定できるメタデータ情報によって必要ですか? たとえば、最初の 3 桁は国に対応し、次の 3 桁は都市に対応します。

4

1 に答える 1

8

主キーが行内の他の属性に関するデータをエンコードしようとするシステムを作成することは決してありません。それが大きな心痛と多くの苦しみへの道です。

  • それは更新をひどく難しくします。たとえば、メキシコが北米地域ではなく中央アメリカ地域に属していると判断した場合、メキシコの店舗のすべての主キーと、それらの主キーが参照されるシステム内のすべての場所を調べて更新する必要があります。 。これは膨大な量の作業であり、実際に実行される可能性は非常に低く、実行時間とテストの点で非常にコストのかかる操作です。
  • これにより、データのクエリがはるかに複雑になります。メキシコのすべての店舗を検索する場合は、行がどの国にあるかを複数回呼び出して解析するコードを作成する必要がSUBSTRありINSTRます。これは、別の列よりもインデックス作成やオプティマイザーの理解が非常に困難です。 。また、すべてメキシコを表す「MEX」、「mex」、および「mx」の行がないことを確認するのははるかに困難です。
  • そして、それは正規化の一般原則に違反しています。都市、国、および地域は、ストアの個別の識別可能な属性です。それらには別の列を与える必要があります。
于 2011-04-13T23:13:31.453 に答える