我是mysql关系的新手。我有一个非常简单的问题:
如果我们可以轻松地通过两个表的联接来获取记录,为什么还要在表之间建立关系?
例如:我有两个表;一个是用户,第二个是图像。下面是表的结构:
CREATE TABLE users(
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(20) NOT NULL,
address VARCHAR(20) NOT NULL,
city VARCHAR(20) NOT NULL,
state VARCHAR(20) NOT NULL,
PRIMARY KEY (id)
)
CREATE TABLE images(
id INT NOT NULL AUTO_INCREMENT,
user_id INT ,
path varchar(100) NOT NULL ,
PRIMARY KEY (id)
)
我可以通过以下帮助连接轻松地从这两个表格中获取记录:-
Select * from users as u left join images as im on u.id=im.user_id
所以我的简单问题是,为什么我们需要这两个表之间的数据库关系。希望这种关系提供删除或更新功能,例如如果我们更新或删除父级,然后其子级自动更新或删除?
提前感谢大家。
答案 0 :(得分:0)
约束可以帮助您保持数据的正确性(完整性)-它们将有助于防止插入非法数据(例如,在您的情况下,是没有用户的图像)。 on delete
和on update
子句使数据库的维护更加容易,因此您不必处理所有表,而只需关注“主”表,而将繁重的工作留给数据库本身。
答案 1 :(得分:0)
原因之一是验证值。使用外键,我们可以确信,在插入新的Image记录时,user_id存在于user表中。