首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于关系型数据库的快速提问

关于关系型数据库的快速提问
EN

Stack Overflow用户
提问于 2011-08-28 15:49:04
回答 3查看 100关注 0票数 0

我正在做一个场地/活动数据库,我已经创建了我的表,如果我做得对的话,我希望得到某人的确认:)

我有两张桌子:

  • Venues
  • Events

Venues的主键是VENUE_ID,它被设置为auto_increment。我在Events中有同一个列,它将包含场地ID的编号。这应该是连接它们的,对吗?

另外,表引擎是MyISAM。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-08-28 16:06:52

它不会自动将表链接到彼此,而且引用的列不一定具有相同的名称(实际上,在某些情况下这是不可能的:例如,当一个表有两个列同时引用另一个表中的同一列时)。

阅读外键;它们是标准SQL,完全按照您的要求执行。但是,请注意,MyISAM存储引擎不能强制执行外键约束,因此只要涉及的任何表都使用MyISAM,外键声明就不会添加太多(但是,它会记录这种关系,至少在您的SQL脚本中是这样)。

我建议您使用InnoDB (或者,如果可行的话,切换到PostgreSQL --它不仅提供外键约束,而且还完全支持事务,不像MySQL,每当您做事务中不支持的事情时,MySQL会默默地提交一个挂起的事务,可能会造成灾难性的后果)。如果您必须/想要使用MySQL,我建议您在任何事情上都使用InnoDB,除非您知道需要从MyISAM中获得额外的性能,并且您可以负担得起这些警告。还要记住,在生产的后期,将大型表从MyISAM迁移到InnoDB可能是痛苦的,甚至是完全不可能的。

票数 2
EN

Stack Overflow用户

发布于 2011-08-28 15:52:08

你的数据库结构是对的。可以使用Innodb添加外键违禁品。另外,不要忘记为第二个表添加索引,以便更快地连接两个表。

有关FK http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html的更多信息

备注: Innodb允许您进行并发选择/(插入/更新),但如果不从MyIsam表中删除,则MyIsam允许您执行相同的操作。否则,MyIsam将锁定整个表。

票数 2
EN

Stack Overflow用户

发布于 2011-08-28 15:53:23

一般来说,是的。这就是如何表示两个表之间的一对多关系。还可以通过设置外键约束将关系专门编码到数据库中。这将允许添加‘l’逻辑,如级联。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7221966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档