首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >会话/日志表密钥设计问题

会话/日志表密钥设计问题
EN

Stack Overflow用户
提问于 2011-01-21 20:37:42
回答 2查看 351关注 0票数 0

我几乎总是听到人们说不要在用户会话和任何日志表中使用FKs,因为这些表通常是高写入表,而一旦写入数据,几乎总是永远测试,没有任何更新或删除。

但问题是,我有这样的冒号: User_id (将会话或活动日志链接到用户) activity_id (将日志活动表链接到系统活动查找表) session_id (将用户日志表与父会话链接).还有4-5个colunms。

因此,如果我不使用FKs,那么我将如何“关联”这些冒号?我可以在没有FKs的情况下加入表格并获取用户信息吗?如果没有FKs,我可以写正确的数据吗?有任何表现影响,还是人们只是说,这是一个不,不?

另一个问题是,如果我不使用FKs,我还能用查找表连接我的数据吗?

EN

回答 2

Stack Overflow用户

发布于 2011-01-21 21:01:30

实际上,您可以在mysql中不使用真正的FKs构建整个数据库。如果您使用MyISAM作为存储引擎,那么FKs无论如何都不是真的。不过,只要连接键匹配,就可以完成您喜欢的所有连接。

性能影响取决于您将多少数据填充到引用表中。如果表中有FK并将数据插入其中或更新FK值,则需要额外的时间。插入或修改后,需要在引用表中查找FK,以确保引用的完整性。

对于那些不真正需要引用完整性的高度使用的表,我只使用松散的列而不是FKs。

AFAIK InnoDB是目前唯一一个支持真正外键的(除非MySQL 5.5有新的或更新的存储引擎来支持它们)。像MyISAM这样的存储引擎确实支持语法,但实际上并不验证引用的完整性。

票数 1
EN

Stack Overflow用户

发布于 2011-01-22 14:24:17

在“历史日志”表中,FK可能是有害的。这类表希望保留某一时间点所发生的事情的确切状态。

FK的问题在于,它们不存储值,只是指向值的指针。如果值发生变化,则历史记录将丢失。您不希望将更新级联到历史日志中。有一个可以加入的“假外键”是可以的,但你也想要强烈地去规范相关的领域,以保存历史。

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

https://stackoverflow.com/questions/4763543

复制
相关文章

相似问题

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