我做了一个简单的cms。
每个帖子都有主题,内容和几个图像,并使用2个表
每次创建新帖子时,都要插入表格主题和内容,然后插入表格b图像,但如果插入表格b失败,则必须删除最后一个插入表格。
更新和删除时都会发生问题。
表a
article
id subject content
1
表b
article_image
id article_id file_path file_sequence
1 1 dkeorkw.jpg 2
1 1 dklwekw.jpg 1
我想知道我应该结合2个表,任何建议吗? 大多数人怎么做
答案 0 :(得分:1)
因为事务管理的东西你无法避免结构。你不应该组合表格。如果你今天要避免这件事,明天就会有大量的反规范化数据。之后,管理数据将非常困难。您将在数据库中的更多位置拥有一个数据。所以我不会再命令这样做。大多数框架本身都提供事务管理。我不知道您使用的是哪种框架和技术,但Spring(在Java中)非常容易提供。
答案 1 :(得分:1)
大多数人该怎么做
您不应该将这两个表组合在一起,因为您以后会遇到问题。大多数人做了标准化。见database normalization。
大多数数据库系统都带有一些机制,允许您在其中一个语句失败时进行事务处理和回滚。您可以在documentation:
中详细了解MySQL如何处理这个问题START TRANSACTION; INSERT ...; INSERT ...; COMMIT;
答案 2 :(得分:1)
您应该在事务中执行插入操作。这样,如果其中一个失败,它们都会被取消。
例如
START TRANSACTION;
INSERT INTO article (...) VALUES (...);
INSERT INTO image (...) VALUES (...);
INSERT INTO article_image (...) VALUES (...);
COMMIT;
如果由于某种原因导致任何插入失败,则DB中不会出现任何插入。