Mysql 住房协会管理系统数据库结构

Mysql 住房协会管理系统数据库结构,mysql,sql,database,database-design,Mysql,Sql,Database,Database Design,我正在为住房协会设计账单结构昨天我在谷歌上搜索并浏览了银行账单结构,设计了我的数据库结构,但我不确定这是否正确。所以我把我的账单数据库结构 请告诉我,如果我错了,我的数据库结构中的任何地方或任何更改都必须进行 还有一个问题,我必须发布社会平衡(借方、贷方),如费用建筑保险和收入,如广告牌囤积,也不确定平衡审计跟踪(将其放在单独表的事务表中,事务id为FK) 请注意,默认情况下,所有表都具有已创建、修改的时间、发件人和ip地址 表1账单报表 表帐户 表事务 表映射帐户用户 如果帐户映射不存在,则表

我正在为住房协会设计账单结构昨天我在谷歌上搜索并浏览了银行账单结构,设计了我的数据库结构,但我不确定这是否正确。所以我把我的账单数据库结构

请告诉我,如果我错了,我的数据库结构中的任何地方或任何更改都必须进行

还有一个问题,我必须发布社会平衡(借方、贷方),如费用建筑保险和收入,如广告牌囤积,也不确定平衡审计跟踪(将其放在单独表的事务表中,事务id为FK)

请注意,默认情况下,所有表都具有已创建、修改的时间、发件人和ip地址

表1账单报表

表帐户

表事务

表映射帐户用户

如果帐户映射不存在,则表示它是一个社会帐户而不是用户帐户

参考资料:-

非常感谢你的努力。你对银行系统的参考真的是一个最好的方法。我想给你提供一些想法,如果你觉得这样对你更好的话,这些想法可能会对你有所帮助

让我们开始吧。如果使用“说明”列的数据:

{水费
建筑费
预留停车场chrgs}

作为一个新列,您的行数将减少,因为您可以进行高效的数据维护。对于每个用户标识,您可以有一行数据,而不是维护四行。只需验证下面提供的示例

对于每平方英尺,您可以分别有一个描述列

id | userId | societyId | BillMonth | MaintChrg | WaterCharges | ConstructionCharges | ReservedParkingCharges | Description
1  | 1001   | 101       | Aug-16    | 5000      | 200          | 300                  | 500                   |  Maint Chrg 1000 sqft x 5 per sqft
2  | 1002   | 101       | Aug-16    | 4000      | 200          | 300                  | 500                   |  Maint Chrg 900 sqft x 5 per sqft
3  | 1003   | 102       | Aug-16    | 5000      | 200          | 300                  | 500                   |  Maint Chrg 900 sqft x 5 per sqft
对于您对借贷使用的疑问:

借记费用保险
作为高级董事会囤积的信贷


您还可以添加其他列,如用户名、人名、电费等。

我对是否与实体一起存储聚合感到犹豫。除非很难计算聚合,否则您应该始终通过检查细节来说明这些问题。

我假设您正在设计一个关系数据库。在关系数据库中,您可以访问数据

我在遵循您的数据库设计时遇到问题,因为您有太多不同的名为id的字段。每个id字段都应该有一个唯一的名称,这样人们就可以知道不同的id字段代表什么

让我们从事务表开始。通常表名是单数的。我将表名和列名大写。你不必遵循那种惯例

Transaction
-----------
Transaction ID
Transaction Type
User ID
Society Account
Transaction Amount
Transaction Time Stamp
...
事务ID是一个自动递增的整数。它也是事务表的主键(集群键)。交易类型为1=用户付款,2=社会收入,3=社会支出。我不确定事务类型1和事务类型2之间的区别

填写用户ID或社会帐户列。交易类型1填写用户ID列,交易类型2和3填写社会账户列。“未填写”列设置为空

交易金额始终为正值。您的代码将从交易类型3的协会帐户中减去交易金额

您将为(用户ID、交易时间戳递减、交易ID)和(社会帐户、交易时间戳递减、交易ID)创建唯一索引。这允许您快速获取给定月份内用户或社会帐户的所有交易

接下来,让我们看看UserAccountBalance表

UserAccountBalance
------------------
User ID
Balance Year and Month
Balance Amount
...
SocietyAccountBalance
---------------------
Society Account
Balance Year and Month
Balance Amount
...
此表的主键是(用户ID、余额年份和月份)。您为每个用户ID维护每个月的历史余额。这允许审计员通过对交易表运行查询来验证余额

接下来,让我们看看SocietyAccountBalance表

UserAccountBalance
------------------
User ID
Balance Year and Month
Balance Amount
...
SocietyAccountBalance
---------------------
Society Account
Balance Year and Month
Balance Amount
...
此表类似于UserAccountBalance表,但适用于社会帐户

接下来,让我们看看账单表

Billing
-------
User ID
Billing Year and Month
Billing Type
Square Feet
Charge per Square Foot
Total Charge
...    
主键是(用户ID、计费年份和月份、计费类型)。我假设你每个月每个账单类型只收取一笔账单费用

计费类型为1=维护费,2=水费,3=施工费,4=预留停车费。您可以根据此表中的值生成账单上的文本,因此无需将文本存储在数据库中。对于计费类型1,填写平方英尺和每平方英尺费用列,否则为空


您仍然需要将付款与账单相匹配,但这应该足以让您走上正确的道路。

结构正常。我会稍微改变一下id的命名

帐户id在某些地方被引用 但在account表中,它是Id


我会在account表中设置account\u id。这样可以更容易地为数据库用户找到可以加入的位置。您称之为“Account\u Id”的每个位置都应该是同一个Account\u Id,并有一个生成它的主表

我不明白如何将费用逐列逐项逐项逐项逐项逐项逐项逐项逐项逐项逐项逐项逐项逐项逐项逐项逐项逐项逐项逐项逐项逐项逐项逐项逐项逐项逐项逐项逐项逐项逐项逐。当增加新的费用时,你会怎么做?如何查找大于或等于某个值的所有费用,而不考虑其类型?Hi Ross,请查看费用是否与数据在同一列中,对于每个用户id,将创建多行,这将导致占用大量内存空间,并且在数据库中为同一用户维护多行不是正确的方法strategy@jimmacaulays正如罗斯所说,如果我必须添加新的费用,我必须添加列,我认为为每个新费用添加新列不是一个好主意。无论如何,感谢你们分享idea,将多个费用作为一个数据保存,并在多个栏中维护同一用户是不相关的。因此,您需要一个包含所有费用的模板,并用它们创建一个表。因此,它将是单个用户的一行数据,而不是处理
SocietyAccountBalance
---------------------
Society Account
Balance Year and Month
Balance Amount
...
Billing
-------
User ID
Billing Year and Month
Billing Type
Square Feet
Charge per Square Foot
Total Charge
...