数据库设计:选择和限制收藏夹

时间:2011-01-12 23:57:45

标签: php database database-design database-schema

目前,在数据库中,我有一个会员表和一个产品表,其中包含一个加入收藏夹表,该表包含来自的主要外键会员产品表格。我要求对会员可以在其收藏夹中放置的产品数量进行限制。

这种限制可以从哪里来?它是在数据库(MySQL)内完成的,因此将成为我现有架构的一部分吗?或者这是一个可以用PHP之类的东西完成的编程功能吗?

2 个答案:

答案 0 :(得分:3)

然而,问题已得到解答,因为您正在寻求理解......

数据库的想法是所有这些对数据的限制和约束都放在数据库本身(作为一个独立的单元)。数据COnstraints应该在数据库中,而不仅仅是在应用程序中。 ISO / IEC / ANSI SQL提供了几种类型的约束,用于不同的目的:

  • FOREIGN KEY约束,参考完整性(以及性能;开放式架构合规性等)

  • 检查约束,检查其他列的数据值,并禁止违规

  • RULE约束,禁止超出范围的数据或指定确切的数据值格式

你的是一个经典的简单RULE或CHECK。数据库和数据库设计的正确答案是RULE或CHECK,而不是代码。

这并不是说应用程序不应该检查计数,并避免尝试无效操作。这只是一个很好的意义。它不是重复,而是在更高级别停止无效操作,从而节省资源使用。如果在开发人员编写的应用程序代码中在外部管理完整性,则无法依赖Db中的数据。可以依赖服务器内部实施的规则,对所有应用程序或应用程序组件强制执行这些规则。

但是免费软件非SQL没有Standard-SQL的基础知识。没有支票或规则。因此,“数据库”中数据的完整性完全依赖于开发人员:他们的质量,知识,一致性等。

MyNonSQL / PHP的正确答案是代码。在每个尝试插入的位置。

答案 1 :(得分:1)

您可以在PHP中执行此操作。

插入前只需SELECT COUNT(*) FROM members_products WHERE member_id = 3