开发人员和数据库设计人员,嗨!
我为我的项目设计了一个数据库模式。
该项目涉及“生产者”和“消费者”之间的关系。但是,如果一个“生产者”可能既是“用户”又是“组织”,那么“消费者”可能只是“用户”(虽然只是现在)。如果考虑到我的项目的对象模型,它主要由两个基本接口组成--生产者和消费者。它们之间的关系是“组织”和“用户”两个主要类的实例,而“组织”类实现“生产者”界面,“用户”类实现“生产者”和“Сonsumer”的接口。例如,在使用我的应用程序的某一段时间内,一些用户必须能够向其他用户出售商品,并且能够从任何人那里购买商品。
在未来,我计划将最需要的支付系统集成到该项目中。请告诉我,如果您有使用支付系统的经验,它将如何改变模型和数据库模式。我是否需要添加“法人”和“个人”的实体?
我根据上面的描述设计了ER-图,但是它有一些缺点.
首先,ER描述和UML描述之间没有完全的对应关系.是否需要为接口分配独立的表?我不知道。事实上,在这种情况下,根据ER-描述,可以说“生产者”和“消费者”是“组织”和“用户”的超类。但实际上它们只是接口。
其次,我需要最简单的设计,以提供对存储的足够灵活的访问,而不需要不必要的“联接”。也许我应该完全放弃接口实现?但我完全赞成使用OOP财富。在数据库级别使用接口实现可以吗?我知道可以使用继承。但我不知道这些技巧将如何影响生产力--因为以前的所有项目都不需要使用超类和接口。我将使用PostgreSQL作为关系数据库管理系统。
请分享您的经验和成功的数据库方案的实施。
更新
如果我要为表“生产者”和“消费者”分配角色,那么我必须给出它们描述实体“用户”和“组织”的属性。一方面,如果角色的数量增加,那么属性的数量就会增加。这条路径会导致表属性的拥塞。不同角色的一些属性将符合空值。另一方面,一个角色的一个属性可以符合另一个角色的多个属性。例如,实体'Organization‘的属性'name’与实体'User‘的属性’name‘、'middlename’、'lastname‘和'username’相一致。第三,我仍然想把“生产者”、“组织”、“用户”和“消费者”区分开来。
发布于 2016-11-04 21:28:54
可能有很多种方法,但没有一种是最佳的。因此,作为一名架构师,您需要权衡架构的不同利弊。我可能会从构建数据库抽象开始。在这里,这取决于您需要持久化对象的程度。也就是说,我是否需要即时的坚持,或它是否足够好,有一些阴影,可以在后台工作。
基本上,您有依赖于相应类的表。您可以简单地保留此依赖是如何实现的。某些编程语言提供了脚手架来将其中一个映射到另一个。这很方便,而且节省了大量的打字/设计。当然不是很灵活。因此,在此基础上,您应该考虑各种选择。是否有必要在类内实现数据库访问,并让它们实现一些序列化接口?
这肯定会提供很多调整和性能选项。但是,您可能也会有一些实现开销。
还是最好有一些隐藏机制,您可以订阅状态并发保存吗?
因此,为了获得正确的设计决策,您需要考虑对象和数据库是如何相互关联的,以及这种绑定需要有多强。不幸的是,没有银弹。
https://stackoverflow.com/questions/40422544
复制相似问题