基本概念
搞清楚你要存什么: 比方说,你正在开发一个电子商务网站,你想要存储用户信息、商品和订单。
想好它们之间的关系: 用户可以购买多个商品,而每个商品可以包含在多个订单中。这里就有了用户、商品和订单之间的多对多关系。
为每个存储的内容创建表格: 你需要创建用户表、商品表和订单表。用户表可能包含用户ID、姓名和地址等列。商品表可以包含商品ID、名称和价格等列。订单表可能包含订单ID、日期和总价等列。
为每个记录添加身份标识: 给每个表格的记录添加唯一的ID,例如用户表的用户ID、商品表的商品ID和订单表的订单ID。
选择合适的数据库软件: 选择一个数据库软件,比如MySQL,来创建这些表格,并使用SQL语句定义它们之间的关系。
思考如何存储和检索数据: 设想一下,你需要存储用户的购物历史,以及通过商品查找订单的情况。这将帮助你设计数据库结构和优化查询。
使用外键建立关联: 在用户表中,你可以添加一个外键,比如订单ID,以关联用户和订单。在订单表中,你同样可以添加外键,比如商品ID,以关联订单和商品。
在订单表中添加用户外键: 在订单表中,添加一个”user_id”列,用于存储与该订单相关的用户ID。确保这个”user_id”列是一个外键,引用用户表中的用户ID。
建立用户表与订单表的关系: 用户表中的用户ID与订单表中的”user_id”列形成关联,这样你可以轻松地查找一个用户的所有订单。
实际应用: 当用户下单时,你会在订单表中创建一条新记录,包含订单的详细信息和”user_id”。如果用户购买了多个商品,这些商品的信息将与订单相关联。这种设计使得在需要时,你可以方便地检索某个用户的所有订单,或者查找某个订单中包含的所有商品。
数据库规范化
数据库规范化就是给数据安排个有序的家,让它们住得开心顺利。这有点像整理房间,让每样东西都有自己的地方,不会冗杂乱七八糟。
规范化:就是整理房间的步骤,确保数据的摆放符合规矩。比如,每个房间的物品都要简单,不能太复杂,不然找起来会头疼。
- 第一范式(1NF):就是保证每样东西都是单一的,不分不散。比如,每个抽屉里只放一个东西,不会有重复或者乱七八糟的组合。
- 第二范式(2NF):就是在第一范式的基础上,确保每样东西都和主要的家具有直接的关系。别的家具都要直接依赖于主要的那一样,不能有半靠半倚的情况。
- 第三范式(3NF):就是在第二范式的基础上,消除家具之间的传递依赖。比如,如果A依赖于B,B依赖于C,那么A不能直接依赖于C,要去找B帮忙。
主键:每个房间都得有个门牌号,独一无二的,方便别人找。这门牌号可以是一个单一的数字,也可以是几个数字的组合。
外键:家具之间也要有联系,比如客厅的沙发和卧室的床,可以通过关联起来。这关联就像是一个家具引用另一个家具的门牌号,确保他们之间的关系稳固。
索引:就像给家具标个号码,方便查找。标在经常用的地方,但别贴太多,不然有点拥挤。
唯一约束:确保每个家具都是独一无二的,不要重复出现。就像每样东西都得有自己的特色。
数据类型:就是确保每样东西都用合适的容器存放,不要用大了或小了的。比如,整数要用整数的盒子,日期要用日期的盒子。
命名规范:给每样东西取个好听又有意义的名字,不然以后找起来会很费劲。
事务管理:就是做事情要一气呵成,要么都成功,要么都失败。比如,收拾房间时,要么全部整理好,要么一样东西都别动。
安全性:得有点门禁,不能让不该进来的人随便闯。保护数据不被乱动。
备份和恢复策略:就像房间定期打扫一样,要有备份,以防万一丢了东西或者家里出了故障。
一些基本的SQL语句
1 | -- 创建用户表 |