gpt4 book ai didi

python - PostgreSQL 中的关系设计

转载 作者:行者123 更新时间:2023-11-29 13:54:42 25 4
gpt4 key购买 nike

我正在使用 PostgreSQL,我在我的数据库中创建了语句表并插入了与以下代码相关的信息:

cur.execute("CREATE TABLE IF NOT EXISTS statements (statement_id SERIAL NOT NULL PRIMARY KEY, statement_name VARCHAR(255) NOT NULL, code INT NOT NULL, FOREIGN KEY (code) REFERENCES companies_list (code))")

statement_name = ["balance_sheet", "income_statement", "cash_flow"]

执行后结果如下:

 statement_id |  statement_name  | code 
--------------+------------------+---------
1 | balance_sheet | 1111
2 | Income_statement | 1111
3 | cash_flow | 1111
4 | balance_sheet | 2222

我为每个公司代码启动了 3 个语句。表中的公司代码是完整列表,其中一些代码(在银行部门)只需要对银行使用不同的报表( Assets 负债表“银行”、损益表“银行”和现金流量“银行”)。最好的解决方案是什么?.. 我是否需要制作更多报表名称(即 balance_sheets_banks ),或者我应该将所有这些银行代码包含在列表中并以某种方式分配它?要么回答我该怎么做?

我问这个问题的原因是在后面的步骤中我正在创建一个表(名为 statement_items )它将包含每个语句的项目,在下面找到它:

cur.execute("CREATE TABLE IF NOT EXISTS statement_items (statement_row_id SERIAL NOT NULL PRIMARY KEY, statement_id INT NOT NULL, row_order INT NOT NULL, row_title VARCHAR(255) NOT NULL, FOREIGN KEY (statement_id) REFERENCES statements (statement_id))")

执行后它会给我:

  statement_row_id | statement_id | row_order |   row_title 
------------------+--------------+-----------+----------------
1 | 1 | 1 | Current Assets
2 | 2 | 1 | Sales

那么到底如何解决上面的第一点,如何实现下表的变化呢?

最佳答案

如果我理解了这个问题,那么您正在创建一个财务报表表,并想知道您是否应该将“银行”报表与其他报表一样对待,还是将其视为某些其他报表类型的“特例”。

根据我的经验,“特殊情况”处理增加了一层复杂性和维护难度,这很少是合理的,因此作为一名经验丰富的维护程序员,我的直觉是尽可能避免特殊情况。我会简单地为“ Assets 负债表”和“ Assets 负债表(银行)”等创建单独的记录。 &c.

我不太清楚你问题的第二部分,但无论如何我都会试一试,如果我偏离轨道你可以纠正我:在没有矛盾的要求的情况下,我会给出每一个陈述它自己的一组行项目,独立于其他报表上的行项目,就像一张发票的行项目独立于其他发票的行项目一样。 如有必要可以在语句之间共享行项目,但在尝试之前我需要看到一个令人信服的用例。

关于python - PostgreSQL 中的关系设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34442260/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com