SQL - 唯一密钥,主密钥&外键

时间:2015-04-25 09:27:27

标签: sql foreign-keys primary-key rdbms unique-key

唯一键,主键外键public class MainActivity extends ActionBarActivity { TextView textView; private PropertyReader propertyReader; private Context context; private Properties properties; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); context=this; propertyReader = new PropertyReader(context); properties = propertyReader.getMyProperties("mydetails.properties"); textView = (TextView)findViewById(R.id.text); textView.setText(properties.getProperty("Name")); Toast.makeText(context, properties.getProperty("Designation"), Toast.LENGTH_LONG).show(); } } public class PropertyReader { private Context context; private Properties properties; public PropertyReader(Context context){ this.context=context; properties = new Properties(); } public Properties getMyProperties(String file){ try{ AssetManager assetManager = context.getAssets(); InputStream inputStream = assetManager.open(file); properties.load(inputStream); }catch (Exception e){ System.out.print(e.getMessage()); } return properties; } } 概念方面有何区别?

他们彼此之间有何不同?

3 个答案:

答案 0 :(得分:23)

PRIMARY Key和UNIQUE Key约束都是相似的,它提供了定义它们的列的唯一强制唯一性。

主键

  • 主键不能为NULL值。
  • 每个表只能有一个主键。
  • 默认情况下,主键是聚簇索引,数据库表中的数据按聚簇索引的顺序进行物理组织。
  • 主键可以与另一个表作为外键相关联。
  • 我们可以借助自动增量字段自动生成ID。主键支持自动增量值。

唯一键

  • 唯一约束可能具有NULL值。
  • 每个表可以有多个唯一约束。
  • 默认情况下,唯一键是唯一的非聚集索引。
  • 唯一约束不能与另一个表作为外键相关联。
  • 唯一约束不支持自动增量值。

外键

  • 外键是表中的一个字段,是另一个表中的主键。
  • 外键可以接受多个空值。
  • 外键不会自动创建索引,群集或非群集。您可以在外键上手动创建索引。
  • 表格中可以有多个外键。
  • 使用聚簇索引支持外键有一些实际的优点,但每个表只能获得一个外键。优势是什么?如果要选择父级加上所有子级记录,则希望子级记录彼此相邻。使用聚簇索引很容易实现。
  • 拥有空外键通常是个坏主意。在下面的示例中,[dbo]。[child]中的记录将被称为"孤立记录"。在做这件事之前要多思考。

答案 1 :(得分:1)

注意:我们使用约束来强制执行数据完整性

主键
1)不能插入空值
2)一个表有一个主键

唯一键 1)每次插入一个空值 2)一个表有多个唯一键 3)你也可以作为候选人的关键词

外键  1)保持两个表之间的关系也是多个    注意:没有任何约束,您可以在多个表中获取数据,但无法获得数据

答案 2 :(得分:-1)

关于唯一键

的说明

主键 - 外键关系中的父表通常称为主键表,但父表中的PK不是必需的。父表中的唯一键/约束就足够了。由于PK始终是唯一的,因此它通常在另一个表中用作外键。看到这个SO post