mysql - 关于一对多关系数据库的快速问题

标签 mysql database-design foreign-keys data-modeling

我正在做一个 field /事件数据库,我已经创建了我的表,如果我做的一切都是正确的,我想得到一些人的确认:)

我有 2 个表:

  • field
  • 事件

Venues的主键是VENUE_ID,设置为auto_increment。我在 Events 中有相同的列,其中将包含地点 ID 的编号。这应该将它们连接起来,对吧?

此外,表引擎是 MyISAM。

最佳答案

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

阅读外键;它们是标准的 SQL,可以完全按照您的意愿行事。但是请注意,MyISAM 存储引擎无法强制执行外键约束,因此只要所涉及的任何表使用 MyISAM,外键声明就不会增加太多(但是,它确实记录了关系,至少在您的SQL 脚本)。

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

关于mysql - 关于一对多关系数据库的快速问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7221966/

相关文章:

postgresql - 多态关联外键约束。这是一个好的解决方案吗?

php - 从单独的表 laravel 中引用 2 列的列

mysql - 阻塞读取时超出锁等待超时

php - 在数据库中存储可变数量的数据

php - 一些 php 脚本(需要逻辑帮助)

mysql - 有意义 N :M relationship with foreign and primary keys?

java - 业务规则数据建模

mysql - 在 symfony2 中使用控制台时如何选择与数据库的连接

mysql - 2 auto_increment 字段,其中 1 重置

sql - Postgresql 分区和 FK