关于表之间关系的SQL Server约束
我一直在从事一个SQL Server项目,该项目允许购物网站的用户插入他们对所购买产品的评论 基本上,我有4个表:关于表之间关系的SQL Server约束,sql,sql-server,Sql,Sql Server,我一直在从事一个SQL Server项目,该项目允许购物网站的用户插入他们对所购买产品的评论 基本上,我有4个表: 客户:(客户ID、用户名、电话号码、等级) 产品:(产品ID、产品代码、名称) 审查:(审查ID、标题、内容、产品ID、客户ID) 账单:(账单ID、日期、产品ID、客户ID) 我有两个问题: 首先,我不知道如何强制只有购买产品的人才能查看它 其次,我不知道如何在客户对产品进行审查后,将客户表中的分数提高一定数量的分数(奖励分数) 有谁能告诉我如何解决这些问题,特别是SQL
:(客户ID、用户名、电话号码、等级)客户
:(产品ID、产品代码、名称)产品
:(审查ID、标题、内容、产品ID、客户ID)审查
:(账单ID、日期、产品ID、客户ID)账单
- 首先,我不知道如何强制只有购买产品的人才能查看它
- 其次,我不知道如何在客户对产品进行审查后,将客户表中的分数提高一定数量的分数(奖励分数)
有谁能告诉我如何解决这些问题,特别是SQL Server代码中的问题吗?有几种方法可以保护
Review
表不插入这些记录,最好在服务器端或客户端代码中处理这些记录,但作为数据库的设计点,我认为最好是:
将您的审查
表格设计为:
(Review_ID, Title, Content, Bill_ID)
并将您的Bill\u Id
列设置为不允许空,以便每个审核记录都必须与账单(购物)记录相关,然后您可以处理代码中的错误,警告用户或
此外,如果您的分数仅与复习有关,您可以设置复习的奖金(分数)比率,使分数如下:
SELECT 5*COUNT(*) -- for example two reviews = 10 bonus
FROM Review
GROUP BY Customer_ID
还有一次,我建议您在代码中处理所有这些,而不是在数据库中
另一个建议是(如果应用程序的逻辑和业务是基于数据库的,而购物网站不是!!)-为
INSERT
操作(如usp\u ReviewInsert
)创建一个存储过程,并在用户想要发布评论时在代码中调用它,然后存储过程处理所有验证内容(如账单和审核之间的关系)以及所有更新内容(如将分数更新到更高)以及插入操作本身。可以采取多种方法来保护Review
表不插入这些记录,最好在服务器端或客户端代码中处理这些记录,但作为数据库的设计点,我认为最好的方法是:
将您的审查
表格设计为:
(Review_ID, Title, Content, Bill_ID)
并将您的Bill\u Id
列设置为不允许空,以便每个审核记录都必须与账单(购物)记录相关,然后您可以处理代码中的错误,警告用户或
此外,如果您的分数仅与复习有关,您可以设置复习的奖金(分数)比率,使分数如下:
SELECT 5*COUNT(*) -- for example two reviews = 10 bonus
FROM Review
GROUP BY Customer_ID
还有一次,我建议您在代码中处理所有这些,而不是在数据库中
另一个建议是(如果应用程序的逻辑和业务是基于数据库的,而购物网站不是!!)-为
INSERT
操作(如usp\u ReviewInsert
)创建一个存储过程,并在用户想要发布评论时在代码中调用它,然后存储过程处理所有验证内容(如账单和审核之间的关系)以及所有更新内容(如将分数更新到更高)以及插入操作本身。您如何知道客户是否购买了产品?您的数据模型中不清楚。顺便说一句,我建议删除此问题并将其拆分为到。您提出了两个问题。您如何知道客户是否购买了产品?您的数据模型中不清楚。顺便说一句,我建议删除此问题并将其拆分为。您提出了两个问题。非常感谢!您的答案对meso good非常有用。您可以将此标记为答案,这样您的问题将得到回答。非常感谢!您的答案对meso good非常有用。您可以将此标记为答案,这样您的问题将得到回答。