哪一个是具有两列的数据库表的最佳实践...一个用于Item1,第二个用于Item2?

时间:2012-04-03 12:09:27

标签: sql database

哪一个是具有两列的数据库表的最佳实践...一个用于Item1,第二个用于Item2?

Table Structure

Item1 | Item2
Apple | Orange
Pen   | Paper

OR

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

简而言之,我希望知道为表格创建主要列/字段ID是一个好习惯,即使它们可以接受多个相同的值?

3 个答案:

答案 0 :(得分:1)

你应该有一把主键。我发布的极其有限的信息中的 guess 是您的字段都不会被视为主键。因此,您需要一个id字段。

(注意:你可以不用,但这是一个坏主意)

答案 1 :(得分:0)

好吧,拥有表中记录的数字ID,使该ID成为表的主键,是首选方法:

  • 对数字的比较操作比字符串上的快得多(给定的数字适合CPU整数或长整数,检查INTEGER SQL类型);
  • 如果您想要将“Apple”重命名为“apple”或者可能某天“APPLE”,您将保持数据库的一致性。如果没有额外的ID列,您将不得不更新所有相关表(如果您计划拥有主键/外键)。
  • 您的主键中只有一列,即使您同时拥有橙色和青苹果的情况,没有额外的ID,您必须将其作为主要(Item1,Item2)。

答案 2 :(得分:0)

听起来您可能需要多个表,但这实际上取决于您需要存储的内容以及原因。首先尝试设计模型,然后创建支持模型的数据结构。

要回答你的问题,看起来第二个表结构是“最佳实践”(或者我应该说'更好的实践'),因为它包含一个ID列,可以作为索引的主键,但它确实取决于使用情况。考虑以下因素:

一种可能的数据结构(按类型分隔)

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