0

一連のデータがあるとします。特定の都市にある住宅群です。

House 1 | 123 Fake St | Notatown
House 2 | 456 Not Rd  | Notatown
House 3 | 789 Foo Cres| Barville
...

次に、データがこのように多くのレコードで続いたと想像してください。

これをテーブルに直接インポートし、各家のレコードを持ち、町を完全にする方が良いですか?それとも、町の名前とともにIDを格納し、複数のテーブルに挿入して遊ぶ必要があるリレーショナルテーブルを作成する方が良いですか? すなわち:

1 | Notatown
2 | Barville
...

もしそうなら、上記のリレーショナルテーブルを実行する「通常の形式」は何と考えられますか?

4

2 に答える 2

0

それは、データで何をしようとしているかに完全に依存します。

一般に、住所フィールドに町の名前を格納することは大罪ではありません。より正規化されたストレージは、都市の値を検索するためのキーを持つ別の「都市」テーブルを持つことであることは正しいです。このような構造は、データが更新されるときに重要になります。静的データ (および都市名はあまり変化しない) の場合は、それほど重要ではありません。

町名を 1 つのテーブルに保持することの利点は、人々にとって読みやすく、アドレス テーブルをダウンロードするだけで技術に詳しくないユーザーにとっても読みやすいことです。

町名を別のテーブルに移動する利点は、一貫性、更新可能性、およびデータベースの ACID 要件 (原子性、一貫性、分離、耐久性) の保持です。さらに、都市名が 4 文字を超える傾向がある場合は、正規化されたバージョンがおそらくスペースを節約します。(後者は、列の値を圧縮する列データベースには当てはまりません。)

どちらの場合も、場所の別のスペルに注意する必要があります。町のマスター リストがある場合は、それを使用して、一致しない値を強調表示します。これは、「町」がビジネスの中心ではないことも前提としています。たとえば、顧客名用に別のテーブルを用意することは非常に重要です。これは、スペルミスによって顧客が過大にカウントされないようにするためです。

于 2013-08-06T11:17:01.233 に答える
0

タウンの一時的なリレーションが独自のテーブルに移動されていないため、house テーブルに直接タウン名を含むバージョンは、第 2 正規形 (2NF) と見なすことができます。

これを第 3 正規形にリファクタリングする必要があるかどうかは、要件によって異なります。

于 2013-08-06T11:15:57.843 に答える