这是对我的另一个问题的一种跟进:分隔的 id 字符串作为字段还是单独的表?
我有一个数据库,其中包含一个产品表、一个类别和一个像“productsInCategories”(在另一个问题中描述)。productsInCategories 表有两个字段:productId 和 categoryId。
当我想从一个类别中获取所有产品时,我会执行以下操作:
SELECT *
FROM Products
INNER JOIN ProductsInCategories
ON Products.Id=ProductsInCategories.productId
它运作良好,我认为这是正确的方法吗?
无论如何,我不确定如何以最佳方式插入新产品。客户端发送新产品的属性,以及它应该添加到的类别的 id。服务器对 Products-table 执行 INSERT 查询,并在 ProductsInCategories 上执行一个查询,在其中插入新创建的产品的 id 和客户端指定的 category-id。这样做的问题是用户当然可以发送自定义数据,并指定不属于他的类别。
我应该先做一个 SELECT 并获取用户指定的类别的 userID,然后检查它是否与当前用户的 id 匹配?或者 ProductsInCategories 是否也应该包含一个 userId 字段(似乎是多余的?)?或者最好,有没有办法在 SELECT 查询中验证这一点?