相关疑难解决方法(0)

将分隔列表存储在数据库列中真的那么糟糕吗?

想象一下带有一组复选框的Web表单(可以选择其中的任何一个或全部).我选择将它们保存在存储在数据库表的一列中的逗号分隔值列表中.

现在,我知道正确的解决方案是创建第二个表并正确地规范化数据库.实现简单的解决方案更快,我想快速获得该应用程序的概念验证,而无需花费太多时间.

我认为节省的时间和更简单的代码在我的情况下是值得的,这是一个可辩护的设计选择,还是我应该从一开始就将其标准化?

更多上下文,这是一个小型内部应用程序,实际上取代了存储在共享文件夹中的Excel文件.我也在问,因为我正在考虑清理程序并使其更易于维护.在那里有一些我并不完全满意的事情,其中​​一个是这个问题的主题.

database database-design database-normalization

346
推荐指数
8
解决办法
6万
查看次数

在 PostgreSQL 中实现多对多关系的最佳方式是什么?

我正在尝试在 PostgreSQL 中实现多对多关系。这是我的数据库中的表:

CREATE TABLE products (
   product_id   serial PRIMARY KEY
 , product_name varchar NOT NULL
);

CREATE TABLE orders (
   order_id   serial PRIMARY KEY
 , order_name varchar NOT NULL
);

CREATE TABLE product_order (
   product_id  int REFERENCES products
 , order_id    int REFERENCES orders
 , PRIMARY KEY (product_id, order_id)
);
Run Code Online (Sandbox Code Playgroud)

products 和orders 表中不会有任何UPDATE 或DELETE,因此不需要ON DELETE 和ON UPDATE 语句。

我还创建了两个哈希索引,以便我可以搜索订单和产品名称并将其 id 存储在表中:

CREATE INDEX product_index ON products USING hash(product_name);
CREATE INDEX order_index ON orders USING hash(order_name);
Run Code Online (Sandbox Code Playgroud)

这就是我想做的:

  1. 我想插入产品表并返回插入行的 id。
  2. 我想插入订单表并返回插入行的 id。 …

sql postgresql database-design many-to-many

4
推荐指数
1
解决办法
2170
查看次数