精华内容
下载资源
问答
  • 将ER图转换成关系模型,并说明主键和外键。_考题宝
    千次阅读
    2021-01-14 11:30:05

    阅读以下说明和图,回答问题1至问题4。

    【说明】

    某高校欲开发一个成绩管理系统,记录并管理所有选修课程的学生的平时成绩和考试成绩,其主要功能描述如下:

    1.每门课程都有3到6个单元构成,每个单元结束后会进行一次测试,其成绩作为这门课程的平时成绩。课程结束后进行期末考试,其成绩作为这门课程的考试成绩。

    2.学生的平时成绩和考试成绩均由每门课程的主讲教师上传给成绩管理系统。

    3.在记录学生成绩之前,系统需要验证这些成绩是否有效。首先,根据学生信息文件来确认该学生是否选修这门课程,若没有,那么这些成绩是无效的;如果他的确选修了这门课程,再根据课程信息文件和课程单元信息文件来验证平时成绩是否与这门课程所包含的单元相对应,如果是,那么这些成绩是有效的,否则无效。

    4.对于有效成绩,系统将其保存在课程成绩文件中。对于无效成绩,系统会单独将其保存在无效成绩文件中,并将详细情况提交给教务处。在教务处没有给出具体处理意见之前,系统不会处理这些成绩。

    5.若一门课程的所有有效的平时成绩和考试成绩都已经被系统记录,系统会发送课程完成通知给教务处,告知该门课程的成绩已经齐全。教务处根据需要,请求系统生成相应的成绩列表,用来提交考试委员会审查。

    6.在生成成绩列表之前,系统会生成一份成绩报告给主讲教师,以便核对是否存在错误。主讲教师须将核对之后的成绩报告返还系统。

    7.根据主讲教师核对后的成绩报告,系统生成相应的成绩列表,递交考试委员会进行审查。考试委员会在审查之后,上交一份成绩审查结果给系统。对于所有通过审查的成绩,系统将会生成最终的成绩单,并通知每个选课学生。

    采用结构化方法对这个系统进行分析与设计,得到如图l-1所示的顶层数据流图和图1-2所示的0层数据流图。

    使用说明中的词语,给出图1-1中的外部实体E1~E4的名称。

    更多相关内容
  • 一、什么是主键外键: 关系型...所以 学号姓名的属性组是一个主键 上机记录表中的序列号不是成绩表的主键,但它学生表中的学号相对应,并且学生表中的学号是学生表的主键,则称成绩表中的学号是学生表的外键
  • 主键主键外键和索引 Primary and foreign keys are a way in which to constrain related data together to ensure data in your database remains consistent and to ensure no redundant data is in the database...

    主键主键外键和索引

    Primary / Foreign Keys

    Primary and foreign keys are a way in which to constrain related data together to ensure data in your database remains consistent and to ensure no redundant data is in the database as a result of deleting a table or row in one table that affects data in other tables that may perhaps rely on that information. It can cause both data integrity problems as well as problems with your application that makes use of such database.

    主键和外键是一种将相关数据约束在一起的方式,以确保数据库中的数据保持一致,并确保由于删除一个表中的表或行而影响其他表中的数据,从而导致数据库中没有冗余数据也许依赖于这些信息。 它可能导致数据完整性问题,也可能导致使用此类数据库的应用程序出现问题。

    什么是主键? (What’s a primary key used for?)

    A primary key is used to ensure data in the specific column is unique. You can only set constraints with primary keys, by setting a foreign key to another column which creates a relationship with the column that has the primary key set. A prime use of a primary key is in the case of a users table. The id column is likely to be a primary key because is needs to be unique. You may also set this column to auto increment; but the most important component is the primary key.

    主键用于确保特定列中的数据唯一 。 您只可以设定主键约束,通过设置一个外键 ,它创建了一个具有主键设置的关系的另一列。 对于用户表,主键的主要用途。 id列可能是主键,因为它需要唯一。 您也可以将此列设置为自动递增。 但最重要的组成部分是主键。

    为什么需要使用主键? (Why do I need to use a primary key?)

    Well, even though the column set as a foreign key may have duplicate data in multiple rows, it is still relying on the unique information in the primary key. If there was non-unique rows in the primary key column, there would not be a use for a foreign key because you would be mapping one row in the foreign key to two rows in the primary key. In essence, primary to foreign keys ensure that:

    好的,即使设置为外键的列可能在多行中都有重复的数据,它仍然依赖于主键中的唯一信息。 如果主键列中存在不唯一的行,则不会使用外键,因为您会将外键中的一行映射到主键中的两行。 本质上,外键的主键确保:

    • the data that can be inserted in the table that has the foreign key can only be information thatuniquely exists in the primary key column.

      具有外键的表中可以插入的数据只能是主键列中唯一存在的信息。
    • if a DELETE or UPDATE occurs, the action you specified will be undertaken to ensure data integrity and prevent data redundancy in your database. Two primary actions are CASCADE and RESTRICT. CASCADE means any affected data will be deleted as well (hence, cascading), in the case of an UPDATE execution; in order to keep data consistent and prevent data redundancy.

      如果发生DELETE或UPDATE,则将执行您指定的操作以确保数据完整性并防止数据库中的数据冗余。 两个主要动作CASCADE和RESTRICT。 CASCADE表示在执行UPDATE的情况下,所有受影响的数据也将被删除(因此, 级联 ); 为了保持数据一致并防止数据冗余。

    什么是外键? (What’s a foreign key used for?)

    How do you actually ensure that data stays integral, consistent and updated? You make use of foreign keys. A primary key ensures that data is unique in one column, but the foreign key is what makes the data stay consistent, as that is where the important data lies that needs to stay consistent and integral. It’s inevitable that in most database-driven applications you create, you’ll need to have multiple tables that are for different areas of your application that makes a reference to an id or some unique data in another table. For example, a profile comments table – your application needs to understand what user id the profile comment is for. You can make use of a foreign key here that maps to the primary key that, as well as keeping data consistent, it also means that you can set the foreign key to CASCADE and any DELETE and UPDATE actions will be cascaded down to any affected row (such as the foreign key).

    您实际上如何确保数据保持完整,一致和更新? 您使用外键 。 主键可确保数据在一列中是唯一的,但是外键是使数据保持一致的原因,因为重要数据所在的位置需要保持一致和完整。 不可避免的是,在您创建的大多数数据库驱动的应用程序中,您将需要具有多个表,这些表用于应用程序的不同区域,这些表引用了另一个表中的ID或某些唯一数据。 例如, 配置文件注释表–您的应用程序需要了解配置文件注释的用户ID 。 您可以在此处使用映射到主键的外键,并使数据保持一致,这还意味着您可以将外键设置为CASCADE,并且任何DELETE和UPDATE操作将被级联到任何受影响的行(例如外键)。

    翻译自: https://www.eukhost.com/blog/webhosting/whats-the-purpose-use-primary-foreign-keys/

    主键主键外键和索引

    展开全文
  • 前言前面几篇 blog,主要简单介绍了在 MySQL 数据库中如何查看某张表,以及对表做一些增删改查的操作,本篇 blog 主要介绍一张表中如何设置唯一标识,以及两张表之间如何关联,即我们日常听说的主键和外键主键含义:...

    前言

    前面几篇 blog,主要简单介绍了在 MySQL 数据库中如何查看某张表,以及对表做一些增删改查的操作,本篇 blog 主要介绍一张表中如何设置唯一标识,以及两张表之间如何关联,即我们日常听说的主键和外键

    主键

    含义:关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键

    举例说明:

    学生表(学号,姓名,性别,班级)

    其中每个学生的学号是唯一的,学号就是一个主键

    创建两张表,并插入数据

    1 员工表emp(student)

    字段如下:

    员工号(sid)

    姓名(sname)

    年龄(sage)

    工资(sal)

    部门号(deptno)

    2 部门表(department)

    1 部门号(deptno)

    2 部门地址(address)

    3 部门电话(detel)

    可能遇到的问题

    在给部门表插入数据的时候,address 字段插入的是中文,但最后显示为?

    解决方法:在创建部门表的时候指定编码

    create table department

    (deptno int,address varchar(100),detel char(20)

    )DEFAULT CHARSET=utf8;

    添加主键约束

    alter table emp

    add constraint pk_emp

    primary key(sid);

    alter table department

    add constraint pk_department

    primary key(deptno);

    查看主键

    语句:desc 表名;

    外键

    含义:外键用于与另一张表的关联,是能确定另一张表记录的字段,用于保持数据的一致性

    举例说明

    员工表emp(员工号,姓名,性别,薪水,部门号) (主键员工号,外键部门号)

    部门表department(部门号,部门地址,部门电话) (主键部门号)

    添加外键约束

    alter table 表名 add constraint FK_ID foreign key(你的外键字段名) REFERENCES 外表表名(对应的表的主键字段名);

    添加外键约束实例

    小插曲:笔者昨日搞好久都无法创建外键,当时也没百度,今天才发现原来是自己的外表 department 没有插入数据。。。。

    alter table emp add constraint FK_ID foreign key(deptno) REFERENCES department(deptno);

    查看外键

    输入命令:show create table 表名;

    删除主键

    命令:alter table emp drop primary key;

    删除外键

    命令:alter table emp drop foreign key deptno;

    注意:删除外键 deptno 后,才能修改主表 emp 的数据

    以上,over

    原创申明:以上内容都是笔者个人经验,仅供参考,如需转载,请注明出处

    展开全文
  • MySQL主键和外键使用及说明

    千次阅读 2021-03-04 00:28:15
    MySQL主键和外键使用及说明一、外键约束MySQL通过外键约束来保证表与表之间的数据的完整性准确性。外键的使用条件:1.两个表必须是InnoDB表,MyISAM表暂时不支持外键(据说以后的版本有可能支持,但至少目前不支持)...

    MySQL主键和外键使用及说明

    一、外键约束

    MySQL通过外键约束来保证表与表之间的数据的完整性和准确性。

    外键的使用条件:

    1.两个表必须是InnoDB表,MyISAM表暂时不支持外键(据说以后的版本有可能支持,但至少目前不支持);

    2.外键列必须建立了索引,MySQL 4.1.2以后的版本在建立外键时会自动创建索引,但如果在较早的版本则需要显示建立;

    3.外键关系的两个表的列必须是数据类型相似,也就是可以相互转换类型的列,比如int和tinyint可以,而int和char则不可以;

    外键的好处:可以使得两张表关联,保证数据的一致性和实现一些级联操作;

    外键的定义语法:

    5f84827a41e809eb9fcac3e9fc967d87.gif 

    语法详解

    [CONSTRAINT symbol] FOREIGN KEY [id] (index_col_name, ...)

    REFERENCES tbl_name (index_col_name, ...)

    [ON DELETE {RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT}]

    [ON UPDATE {RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT}]

    该语法可以在 CREATE TABLE 和 ALTER TABLE 时使用,如果不指定CONSTRAINT symbol,MYSQL会自动生成一个名字。

    ON DELETE、ON UPDATE表示事件触发限制,可设参数:

    RESTRICT(限制外表中的外键改动)

    CASCADE(跟随外键改动)

    SET NULL(设空值)

    SET DEFAULT(设默认值)

    NO ACTION(无动作,默认的)

    语法详解

    简单演示一下使用,做dage和xiaodi两个表,大哥表是主键,小弟表是外键

    建表:

    4eb7d6b533d6d05264db750e26638c30.gif

    1CREATE TABLE `dage` (

    2 `id` int(11) NOT NULL auto_increment,

    3 `name` varchar(32) default '',

    4 PRIMARY KEY (`id`))

    5 ENGINE=InnoDB DEFAULT CHARSET=latin1;

    6

    7CREATE TABLE `xiaodi` (

    8 `id` int(11) NOT NULL auto_increment,

    9 `dage_id` int(11) default NULL,

    10 `name` varchar(32) default '',

    11 PRIMARY KEY (`id`),

    12 KEY `dage_id` (`dage_id`),

    13 CONSTRAINT `xiaodi_ibfk_1` FOREIGN KEY (`dage_id`) REFERENCES `dage` (`id`)

    14) ENGINE=InnoDB DEFAULT CHARSET=latin1;

    91feb5ec30ceb8fec2a3dbac1d733d84.gif

    插入个大哥:

    6a28958232fc000c8ef5be946d3179e8.gif

    1mysql> insert into dage(name) values('铜锣湾');

    2Query OK, 1 row affected (0.01 sec)

    3mysql> select * from dage;

    4+----+--------+

    5| id | name |

    6+----+--------+

    7| 1 | 铜锣湾 |

    8+----+--------+

    91 row in set (0.00 sec)

    ef51e47e169aded26c16307fb95ab28e.gif

    插入个小弟:

    4203554e7f6231e7683c4d26d020e3e9.gif

    1mysql> insert into xiaodi(dage_id,name) values(1,'铜锣湾_小弟A');

    2Query OK, 1 row affected (0.02 sec)

    3

    4mysql> select * from xiaodi;

    5+----+---------+--------------+

    6| id | dage_id | name |

    7+----+---------+--------------+

    8| 1 | 1 | 铜锣湾_小弟A |

    9+----+---------+--------------+

    d9fd2f4de547b4dd7a642149cc9a80db.gif

    把大哥删除:

    1mysql> delete from dage where id=1;

    2ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails (`bstar/xiaodi`, CONSTRAINT `xiaodi_ibfk_1` FOREIGN KEY (`dage_id`) REFERENCES `dage` (`id`))

    提示:不行呀,有约束的,大哥下面还有小弟,可不能扔下我们不管呀!

    插入一个新的小弟:

    1mysql> insert into xiaodi(dage_id,name) values(2,'旺角_小弟A');

    2ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`bstar/xiaodi`, CONSTRAINT `xiaodi_ibfk_1` FOREIGN KEY (`dage_id`) REFERENCES `dage` (`id`))

    3

    提示:小子,想造反呀!你还没大哥呢!

    把外键约束增加事件触发限制:

    93ee35f38223cdc7366c85db12a61500.gif

    1mysql> show create table xiaodi;

    2

    3 CONSTRAINT `xiaodi_ibfk_1` FOREIGN KEY (`dage_id`) REFERENCES `dage` (`id`)

    4

    5mysql> alter table xiaodi drop foreign key xiaodi_ibfk_1;

    6Query OK, 1 row affected (0.04 sec)

    7Records: 1 Duplicates: 0 Warnings:

    8mysql> alter table xiaodi add foreign key(dage_id) references dage(id) on delete cascade on update cascade;

    9Query OK, 1 row affected (0.04 sec)

    10Records: 1 Duplicates: 0 Warnings: 0

    0eb6fb49773998c13156aadd52be4f9c.gif

    再次试着把大哥删了:

    e46d66a2b83b121746f02411c866e981.gif

    1mysql> delete from dage where id=1;

    2Query OK, 1 row affected (0.01 sec)

    3

    4mysql> select * from dage;

    5Empty set (0.01 sec)

    6

    7mysql> select * from xiaodi;

    8Empty set (0.00 sec)

    627dfedb376085108f39f6bf6ef3054f.gif

    哎呦,这回对应的小弟也没了,没办法,谁让你跟我on delete cascade(级联限制)了呢!

    展开全文
  • MySQL添加主键和外键

    2021-03-15 21:53:47
    添加主键约束:alter table 表名 add constraint 主键 (形如:PK_表名) primary key 表名(主键字段);添加外键约束:alter table 从表 add constraint 外键(形如:FK_从表_主表) foreign key 从表(外键字段) referen....
  • 主键和外键

    2020-10-14 19:14:44
    在同一个表中没有完全一致的两行数据, 当一行数据可以有少数几个属性确定的话,这几个属性就可以成为主键, 设立了表的主键之后,数据库系统会为主键的列建立索引制约, 利用主键进行检索的速度是最快的. 如果有两个...
  • 数据库-主键和外键及其约束

    千次阅读 2021-01-16 23:24:36
    1:什么是主键在一张表中,用来唯一标识一条记录的字段集,叫做主关键字或者主关键码,简称主键(或主码),这里说"字段集"是因为主键可能用一个字段或者多个字段来表示。举例来看:学生表(学号, 姓名, 性别,专业...
  • 关于数据库主键和外键(终于弄懂啦)

    万次阅读 多人点赞 2019-06-18 15:59:59
    转 关于数据库主键和外键(终于弄懂啦) 2018年07月16日 19:44:24 f45056231p 阅读数 19385 ...
  • 』,然后更多需求被提了出来:得有用户登录界面,登录的要素有:用户名,密码刚开始先不开放注册,我们通过命令行直接添加用户任务与用户是『n 对 1』的关系,登录用户只能看见自己创建的任务『假如我们之前的任务...
  • 主键和外键的作用

    2021-04-07 08:18:32
    主键和外键是把多个表组织为一个有效的关系数据库的粘合剂。主键和外键的设计对物理数据库的性能可用性都有着决定性的影响。 必须将数据库模式从理论上的逻辑设计转换为实际的物理设计。而主键和外键的结构是这个...
  • 什么是主键和外键

    2020-07-19 16:01:31
    成绩表中单一一个属性无法唯一标识一条记录,学号课程号的组合才可以唯一标识一条记录,所以学号课程号的属性组是一个主键 成绩表中的学号不是成绩表的主键,但它学生表中的学号相对应,并且学生表中...
  • 什么是主键和外键

    万次阅读 多人点赞 2018-07-02 09:06:59
    一、什么是主键外键:关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键 比如 学生表(学号,姓名,性别,班级) 其中每个学生的学号是唯一...
  • Oracle的主键和外键

    千次阅读 2020-05-12 21:32:24
    文章目录一、表的主键二、表的外键1、外键的概念2、外键的作用3、外键约束4、创建外键5、删除外键6、示例脚本三、版权声明 一、表的主键 在现实世界中,很多数据具有唯一的特性,例如身份证号码,在国家人口基本信息...
  • 数据库主键和外键的作用?

    万次阅读 多人点赞 2018-04-26 13:18:34
    主键保证了数据的唯一性,外键保证了数据的完整性。主键是能确定一条记录的唯一标识,比如,一条记录包括身份正号,姓名,年龄。身份证号是唯一能确定你这个人的,其他都可能有重复,所以,身份证号是主键外键用于...
  • 定义主键和外键主要是为了维护关系数据库的完整性,总结一下:1.主键是能确定一条记录的唯一标识,比如,一条记录包括身份正号,姓名,年龄。身份证号是唯一能确定你这个人的,其他都可能有重复,所以,身份证号是...
  • MySQL数据库的主键和外键详解

    千次阅读 2020-03-20 20:15:42
    MySQL数据库的主键和外键详解 主键 主键的定义 主键:表中经常有一个列或多列的组合,其值能唯一地标识表中的每一行。这样的一列或多列称为表的主键,通过它可强制表的实体完整性。当创建或更改表时可通过定义 ...
  • 主键和外键的区别

    万次阅读 多人点赞 2018-11-30 09:41:00
    一、什么是主键外键 主键:关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键 。 比如 1.学生表(学号,姓名,性别,班级) 其中每个学生的...
  • 主键外键

    2021-05-20 11:53:07
    主键外键: 什么是主键主键是能确定一条记录的唯一标识。 举个栗子: 比如身份证上面的信息,它包括姓名、性别、出生日期、身份证号等信息; 在这些信息中,姓名、性别、出生日期等都有可能重复;只有身份证号...
  • 关于数据库主键和外键的作用与区别

    万次阅读 多人点赞 2017-05-09 10:35:52
    一、什么是主键外键: 关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键  比如  学生表(学号,姓名,性别,班级)  其中每个学生的...
  • 1.3 主键外键和索引的区别 2.主键(primary key) 2.1 通过SSMS设置主键 2.2 通过SQL语句设置主键 3.外键(foreign key) 3.1 通过SSMS设置外键 3.2 通过SQL语句设置外键 4.SQL语句向已存在表设置主键和外键 4.1 ...
  • 数据库的主键和外键设计方法

    千次阅读 2020-04-27 19:20:47
    关于数据库主键和外键 https://blog.csdn.net/bingqingsuimeng/article/details/51595560 外键设计 https://blog.csdn.net/xianyu_0418/article/details/4469072
  • MySQL数据库的主键和外键详解主键主键的定义主键:表中经常有一个列或多列的组合,其值能唯一地标识表中的每一行。这样的一列或多列称为表的主键,通过它可强制表的实体完整性。当创建或更改表时可通过定义 PRIMARY ...
  • 如果主键需要更新,则说明主键应对用户无意义的原则被违反了。 注:这项原则对于那些经常需要在数据转换或多数据库合并时进行数据整理的数据不适用。 4. 主键不应包含动态变化的数据,如时间戳、创建时间列、...
  • 主键的具体定义 能够唯一标识一个事物的一个字段或多个字段的组合 附注: 含有主键的表称为主键主键通常都是整数,不建议...外键的具体定义 定义: ​ 如果一个表中的若干个字段是来自另外若干个表的主键或唯一键,

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 58,865
精华内容 23,546
关键字:

并说明主键和外键