我正在做一个 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/