我在Mysql工作台中建立了一个表,并定义了多对一关系以及哪些键是外键等,我知道它会将这些放入实际的创建脚本中。所以我想知道,这仅仅是为了确保数据模型从幕后的角度看是逻辑的,还是这些关系实际上可以在查询中使用?如果可以,有哪些操作会涉及到它们?(简短的示例代码会很棒)
我现在正在用sqlitemanager firefox插件构建一个SQLite数据库。它没有定义这些东西的选项,我想知道我是否应该关心。(到目前为止,我只做了非常简单的查询)。
发布于 2011-02-18 09:25:10
实际上,您可以在具有任何列的两个表之间创建联接。拥有主键和外键的全部原因是为了加强两个表之间的关系。换句话说,为了在子表中添加一行,需要让父表的主键作为子表中的外键。否则,插入将失败。
使用外键的另一个原因是允许父表执行级联删除。这样,您就不必先手动删除子表中的行,然后再从父表中删除...如果你有正确的级联删除设置,你可以只删除表行,所有的子行也会消失。
也就是说,如果您不想显式地将该特定列定义为外键,您仍然可以执行查询而不会出现任何问题,但这会使您的同事很难阅读ER图,因为两个表之间的关系没有显式定义。
发布于 2011-02-18 09:24:29
外键非常有用。假设您有一个国家和城市的应用程序。
Country
id
name
City
id
name
countryId每个城市都有一个外键,说明城市在哪个国家。因为您已经将' cities‘表中的'countryId’定义为一个外键,它指向' country‘表中的'id’列,所以可以让MySQL在删除国家时自动删除所有相应的城市。
https://stackoverflow.com/questions/5036730
复制相似问题