我被这张图搞糊涂了,http://www.b-eye-network.com/images/content/i030ht0104.gif (本文最后一张图)
1-在“会计分录”表中显示"DebitEntry“和"CreditEntry”i)是这两列还是
ii)这是两行数据吗?或者iii)它本身是两个不同的表,Acounting_entry_credit和Accounting_entry_debit?
与“帐户”表相同的问题,它显示资产帐户,负债帐户,权益帐户?它们是3列还是3行?
来源:http://www.tdan.com/view-articles/5227/
发布于 2010-02-19 11:47:18
create table accounting_entry (
id integer primary key,
amount float not null,
operator text,
credit_id integer references accounting_transaction(id),
debit_id integer references accounting_transaction(id)
);z<-我一开始也认为是这样的,但是仔细看看"ACCOUNTING_TRANSACTION“表,一个事务关系同时是”贷方和借方“是没有意义的。
因此,"DebitEntry“和"CreditEntry”实际上是两个独立的表,但它们引用了相同的“会计事务ID”,这是有意义的,“会计事务必须由一个或多个借方分录组成,必须由一个或多个贷方分录组成”。
示例
>>ACCOUNTING_ENTRY_DEBIT
ID---ACCOUNTTRANSACTIONID-----ACCOUNTID---------AMOUNT-----OPERATOR
102--------2------------------------1---------------1,000-----Plus
>>ACCOUNTING_ENTRY_CREDIT
ID---ACCOUNTTRANSACTIONID-----ACCOUNTID---------AMOUNT-----OPERATOR
105--------2------------------------2---------------1,000-----Minus发布于 2010-02-18 23:21:26
原则上,任何理智的设计都不会将两个不同的数据值放在同一列中,比如“借项”和“贷方”。
看起来“借项分录”和“贷方分录”框是从“会计分录”表“继承”的表。我如何解释这是“借项分录”和“贷方分录”都是包含列ID、AMOUNT和OPERATOR的表。然后,这些表中的行将被“会计事务”表引用。
因此,看起来每个大框定义了一个表的“类型”,每个嵌套框定义了ERD中的一个特定表。我猜他们是这样画的,这样他们就不必一遍又一遍地重复列的定义。
然后,每个“帐户”类型(资产、负债和权益)都有一个ID和一个注释字段。它们每个都与"ACCOUNT TYPE“表有关系,该表包含帐号和描述。
发布于 2010-02-19 00:57:35
这有点模糊,因为这篇文章一直在谈论超类型和子类型,而没有真正说明implement inheritance in databases的可能方法是什么。
但总的来说,这篇文章说:
会计事务处理必须由一个或多个借方分录组成,并且必须由一个或多个贷方分录组成。
对我来说,这看起来和听起来都像是引用同一个表的两个外键:
create table accounting_transaction (
id integer primary key,
date date not null,
description text
);
create table accounting_entry (
id integer primary key,
amount float not null,
operator text,
credit_id integer references accounting_transaction(id),
debit_id integer references accounting_transaction(id)
);用适当的约束来确保正文中所述的条件。当然,还有更好的方法来设计它。例如:
create table accounting_entry (
id integer primary key,
amount float not null,
operator text,
entry_type integer,
transaction_id integer references accounting_transaction(id)
);使用entry_type表示贷方或借方,并再次表示适当的约束。
编辑:通常情况下,这种类型的ERD表示一种不同的关系:从一个集合到固定数量的相同类型但在集合上下文中具有不同含义的组件。经典的示例是一个飞行路线,它恰好有一个出发机场和(希望)恰好一个目的地机场,其中机场当然就是机场。
create table flight_leg(
id integer primary key,
departure_airport integer references airport(id),
destination_airport integer references airport(id)
);
create table airport(
id integer primary key,
iata_code varchar(3) not null,
name text
);注意谁引用谁的区别。对于本文中的模型,这意味着一个accounting_transaction恰好引用了一个debit_entry和一个credit_entry,这似乎不是作者想要的。
https://stackoverflow.com/questions/2289188
复制相似问题