我很难将头围绕在设计缺陷上,我真的希望社区可以帮助我。我目前的设计是:
SUBMISSIONS table
submission_ID (pk, int)
company_id (fk, int)
product_id (fk, int)
vendor_id (fk, int)
category (VARCHAR)
price (INT)
approval_status (TINYINT)
notes (MEDIUMTEXT)
VENDOR table
vendor_ID (pk, int)
vendor_name (VARCHAR)
COMPANY table
company_id (pk, int)
company_name (VARCHAR)
PRODUCTS table
product_id (pk, int)
product_name(VARCHAR)
我的项目是向公司提交产品以供审核的供应商。这些公司的仪表板包含一个网格,可以将供应商提交的所有产品提取给他们,他们会对其进行审核,然后批准或拒绝使用这些产品。
我的问题是这个......在提取待定产品网格时,我按类别对提交内容进行分组。这样,如果一个类别中有100个产品(这是常见的),他们只需要看到类别,而不是单个产品。他们可以在从网格弹出的模态窗口中输入提交组的注释。窗口的ID是组中的第一个提交,提交是存储注释的位置。我主要担心的是,他们可以单独批准或拒绝来自该组的提交,因此当他们为该组中的第一次提交附加的组注释时会发生什么,然后他们否认首次提交。现在当他们再次登录时,该组的所有笔记似乎都已消失,因为笔记附加到第一个提交,现在位于其被拒绝的产品文件夹中。必须有一种更好的方法来跟踪小组最初的笔记,然后将这些笔记提供给以后的个人提交,但我没有用我有限的数据库设计技能看到它。此时的任何建议都是有帮助的。
答案 0 :(得分:1)
我的建议是
category (VARCHAR)
替换为category (fk, int)
SUBMISSIONS
notes (MEDIUMTEXT)
SUBMISSIONS
答案 1 :(得分:1)
如前所述,您应该为Categories创建一个表,Submission将存储CategoryID。
您正在执行查询以检索模式中显示的所有项目。更新组中的提交时,还必须更新所有记录。
所以基本上你的更新声明是:
UPDATE Submissions
SET notes = @notes, approval_status = @approval_status
WHERE (same criteria from your select statement)
由于您已经缩小了在模式中显示的内容,我假设您知道如何将值发送到SQL语句的参数。