2012-04-03 11 views
0

2つの列を持つデータベーステーブルのベストプラクティスはどれですか?1つはItem1、2つ目はItem2ですか?要するに2つの列を持つデータベーステーブルのベストプラクティスはどれですか?1つはItem1、2つ目はItem2ですか?

Table Structure 

Item1 | Item2 
Apple | Orange 
Pen | Paper 

OR 

ID | Item1 | Item2 
1 | Apple | Orange 
2 | Pen | Paper 

私はそれは彼らが複数の同じ値を受け入れることを許可されている場合でも、テーブルの主な列/フィールドのIDを作成することをお勧めし知りたいですか?

+0

は、あなたがこの主題に多くのコンテキストを提供することができますか?あなたは正確に何を達成しようとしていますか? – walther

+0

"Item1"と "Item2"という名前の列は、とにかく悪い考えです...実際には何かを記述するのは役に立たないから2つです。 1NFに違反している。 – cHao

+1

開発中の開発者は少し質問をさらに発展させる必要があります... –

答えて

1

主キーが必要です。私の推測あなたが投稿した非常に限られた情報から、いずれのフィールドもプライマリキーとしてカウントされないということです。したがって、idフィールドが必要です。

(注:あなたはせずにそれを行うことができますが、それは悪い考えです)

0

まあ、そのIDにテーブルの主キーを作り、テーブル内のレコードの数値のIDを持つ、好ましい方法である to go:

  • 数値の比較演算は、文字列のものよりもはるかに高速です(指定された数値は、CPU整数またはlong値に適合し、INTEGER SQL型をチェックします)。
  • "Apple"の名前を "apple"または "APPLE"に変更したい場合は、データベースの整合性を保つことができます。余分なID列がなければ、すべての従属テーブルを更新する必要があります(もちろん、主キー/外部キーを使用する予定の場合)。
  • Primary(Item1、Item2)として追加する必要のない、オレンジとグリーンの両方のリンゴを持っている場合でも、プライマリキーには1つの列しかありません。
0

複数のテーブルが必要なように聞こえるかもしれませんが、実際に格納する必要があるものとその理由によって異なります。最初にモデルを設計してから、モデルをサポートするデータ構造を作成してください。

質問に答えるには、インデックス作成の主キーとして機能するID列が含まれているため、2番目のテーブル構造が「ベストプラクティス」(または「より良い方法」と言えば)ですが、本当に使い方にかかっています。以下の考慮:

一つの可能​​なデータ構造(タイプ別のセパレート)を

table - Fruit 
============= 
FruitId int not null identity(1,1) primary key 
Name varchar(100) not null 

table - OfficeSupply 
==================== 
OfficeSupplyId int not null identity(1,1) primary key 
Name varchar(100) not null 

(型の列と組み合わせて)別の可能性

table - Item 
============ 
ItemId int not null identity(1,1) primary key 
Name varchar(100) not null 
Type varchar(100) not null 
関連する問題