如果我可以通过连接两个表轻松获取记录。那为什么我们需要表之间的关系

时间:2018-11-01 08:02:36

标签: mysql

我是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
  

所以我的简单问题是,为什么我们需要这两个表之间的数据库关系。希望这种关系提供删除或更新功能,例如如果我们更新或删除父级,然后其子级自动更新或删除?

提前感谢大家。

2 个答案:

答案 0 :(得分:0)

约束可以帮助您保持数据的正确性(完整性)-它们将有助于防止插入非法数据(例如,在您的情况下,是没有用户的图像)。 on deleteon update子句使数据库的维护更加容易,因此您不必处理所有表,而只需关注“主”表,而将繁重的工作留给数据库本身。

答案 1 :(得分:0)

原因之一是验证值。使用外键,我们可以确信,在插入新的Image记录时,user_id存在于user表中。