我正在开发一个存储财务数据的应用程序,并需要对存储多个财务报表的数据的表进行建模。我想出了以下两种设计,但我无法决定使用哪一种。谢谢你的意见。


基于丹尼尔以下答案的第三张图表

发布于 2014-11-30 21:24:18
海事组织、资产负债表、损益表和现金流量表可以是相同的。以下是我的看法:
-- Companies
CREATE TABLE company (
[id] int NOT NULL PRIMARY KEY,
[name] varchar(255) NOT NULL
);
-- "Balance sheet", "IFRS Income statement", etc
CREATE TABLE statement (
[id] int NOT NULL PRIMARY KEY,
[name] varchar(255) NOT NULL
);
--- "Tangible assets", "Outstanding stock", etc
CREATE TABLE statementRow (
[id] int NOT NULL PRIMARY KEY,
statementId int NOT NULL,
rowOrder int NOT NULL,
rowTitle varchar(255) NOT NULL,
rowDescription varchar(max) NULL,
rowProperties varchar(max) NULL,
FOREIGN KEY (statementId) REFERENCES statement ([id])
);
--- The facts
CREATE TABLE statementFact (
companyId int NOT NULL,
statementRowId int NOT NULL,
[date] date NOT NULL,
amount numeric NULL,
PRIMARY KEY ([date], statementRow),
FOREIGN KEY (companyId) REFERENCES company ([id]),
FOREIGN KEY (statementRowId) REFERENCES statementRow ([id])
);这种模式的优点:
发布于 2014-11-30 20:30:57
如果没有更多的应用领域知识,就很难给出一个好的答案。
然而,我通常更喜欢设计2,因为“工件”(收益表、资产负债表和现金流量)(我想)总是属于一个特定的公司/财务报表。使用设计#1,多个财务报表可能与相同的工件相关,这(我认为)会很奇怪。
我不确定我是否明白财务报表的目的;这些陈述不能直接与一家公司有关,并包括一年吗?这样就很容易在特定年份查询特定类型的状态,少了一个联接。
如果每个工件的内容只是文本,您还可以考虑将它们存储在同一个表中,其中包含语句项中的文本和类型属性;再次保存一个联接。正如我所理解的,您的语句项与工件的比例为1:1。
我希望我的想法对你有用。祝你今天愉快:)
https://dba.stackexchange.com/questions/83951
复制相似问题