zoukankan      html  css  js  c++  java
  • 联合主键和复合主键区别

    什么是数据表的复合主键
    所谓的复合主键 就是指你表的主键含有一个以上的字段组成
    比如
    create table test
    (
       name varchar(19),
       id number,
       value varchar(10),
       primary key (name,id)
    )

    上面的name和id字段组合起来就是你test表的复合主键
    它的出现是因为你的name字段可能会出现重名,所以要加上ID字段这样就可以保证你记录的唯一性
    一般情况下,主键的字段长度和字段数目要越少越好

    联合主键
    什么是联合主键?
    (主键原则上是唯一的,别被唯一值所困扰。)
    顾名思义就是多个主键联合形成一个主键组合
    一个简单的例子
    主键A跟主键B组成联合主键
    主键A跟主键B的数据可以完全相同(困扰吧,没关系),联合就在于主键A跟主键B形成的联合主键是唯一的。
    下例主键A数据是1,主键B数据也是1,联合主键其实是11,这个11是唯一值,绝对不充许再出现11这个唯一值。(这就是多对多关系)
    主键A数据 主键B数据
    1      1
    2      2
    3      3
    主键A与主键B的联合主键值最多也就是
    11
    12
    13
    21
    22
    23
    31
    32
    33

    CREATE TABLE `products_description` (
     

    `products_id` int(11) NOT NULL,
      `language_id` int(11) NOT NULL default '1',
      `products_name` varchar(64) NOT NULL default '',
      `products_description` text,
      `products_short_description` text,
      `products_url` varchar(255) default NULL,
      `products_viewed` int(5) default '0',
      PRIMARY KEY  (`products_id`,`language_id`),
      KEY `products_name` (`products_name`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
  • 相关阅读:
    python-装饰器
    Django-session相关操作+redis
    Could not connect to Redis at 127.0.0.1:6379: 由于目标计算机积极拒绝,无法连接。redis启动失败
    mybatis高级特性
    Elasticsearch从入门到熟练使用
    sharding-jdbc从入门到熟练使用
    mysql主从复制搭建(普通安装和docker方式)
    领域驱动设计入门及简单落地
    docker的一些基本命令
    docker发布jar包项目
  • 原文地址:https://www.cnblogs.com/bluealine/p/5474194.html
Copyright © 2011-2022 走看看