数据库实验设计——朋友圈【关系模型设计完善】

这是数据库的第3次实验作业啦,但我真的啥也不会…觉得自己之前写的实验也都是瞎写,老师打分还没下来,也不知道可行性如何。
一、 主键外键索引

1.主键是能确定一条记录的唯一标识,比如,一条记录包括身份正号,姓名,年龄。
身份证号是唯一能确定你这个人的,其他都可能有重复,所以,身份证号是主键。

2.外键用于与另一张表的关联。是能确定另一张表记录的字段,也就是另一张表的主键,用于保持数据的一致性。
比如,A表中的一个字段,是B表的主键,那他就可以是A表的外键。

3.索引:索引基本是为了在你数据量巨大的时候,能加快你的查询速度
索引就像是一个表的目录而已 ;一个表可以有多个唯一索引

4.排序:就是纯粹为了按照某个字段从大到小或从小到大排序
区别:其实索引的正序倒序就是一个分布方式的区别,索引的正倒序并不能让最后的查询结果也是这么显示
问题来了:索引字段和排序字段该怎么选择?我不理解

二、ID,UID是什么意思?
ID:是指论坛注册的用户名,可以自己设置。

UID 是用户身份证明(User Identification)的缩写。UID用户在注册会员后,系统会自动的给你一个UID的数值。意思就是给这名用户编个号
三、关于分隔符DELIMITER
告诉MySQL解释器,该段命令是否已经结束了,mysql是否可以执行了。
可以通过delimiter更改语句结束符
一般会用:// , $$ 或 &&
默认的SQL语句中,delimiter是分号 ,以分号 “;” 表示结束。
更改结束符举例:

DELIMITER //
CREATE FUNCTION get_number_by_id(id INT)
RETURNS VARCHAR(300)
BEGIN
RETURN (SELECT CONCAT('name: ', name, '--', 'number: ', number)
FROM users_info WHERE uid = id);
END//
DELIMITER ;

四、关系数据库约束机制

数据完整性通常由三种形式:

  1. 实体完整性:即表中有一个主键。
    实体完整性在MySQL中表现为设置主键约束和唯一性约束,即primary key与unique key。这两个约束均会在数据库中创建对应的索引。
    主键约束、唯一性约束区别

  2. 域完整性:又称为用户自定义完整性,保证数据值满足用户指定的条件。

#建表时增加唯一性约束
`username` varchar(18) NOT NULL unique,  -- 唯一性约束
# 在外增加唯一性约束
ALTER TABLE `t_user` ADD unique(`username`);

1) 检查约束

  • 在创建表时设置检查约束

一般情况下,如果系统的表结构已经设计完成,那么在创建表时就可以为字段设置检查约束了。

#在 test_db 数据库中创建 tb_emp7 数据表,要求 salary 字段值大于 0 且小于 10000
 CREATE TABLE tb_emp7
 (
    id INT(11) PRIMARY KEY,
    salary FLOAT,
    CHECK(salary>0 AND salary<100),
    FOREIGN KEY(deptId) REFERENCES tb_dept1(id)
);
  • 在修改表时添加检查约束
#修改 tb_emp7 数据表,要求 id 字段值大于 0
ALTER TABLE tb_emp7 ADD CONSTRAINT check_id CHECK(id>0);

2)创建非空约束
3) 默认值

  1. 参照完整性:表示与参照表的关系和数据约束,即外键。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值