数据库设计:每种实体类型的一组表或所有实体类型的通用集

时间:2013-03-07 10:23:25

标签: database entity

我的公司每年组织一次美食节。该节日期间举办了许多活动。我的任务是使用CMS(内容管理系统)设计节日网站。

有三种主要类型的实体 - 事件,建立,人。一个活动有许多参与的场所(赞助商,餐馆,酒店)和人(厨师,酿酒厂代表,调酒师)。

每个实体可以有许多类别,许多文档,照片库和链接到其他类型的实体。哪个更好 - 案例1或案例2(见下文)?

[案例1] - 每种实体类型的一组表格:

事件表:event,eventCategory,eventDocument,eventGallery,event_establishment,event_person

建立表:建立,建立分类,建立图书馆,建立_人员

人员表:person,personCategory,personDocument,personGallery

personDocument表的示例列:docId,docFilename

请注意,上述列与eventDocument和establishDocument完全相同。

[案例2] - 每个实体类型的表格,类型表格和一组通用表格:

表:event,establishment,person,entityType,entityCategory,entityDocument,entityGallery,entity_entity

entityDocument的示例列:docId,entityTypeId,docFilename

感谢任何建议 - 谢谢!

1 个答案:

答案 0 :(得分:0)

这只是我的观点,但我已经做了一段时间了。

案例1 是迄今为止最容易维护的,也是我的经验中最推荐的。您可以管理您的实体,并根据您用于编写网站的语言,您可以利用一些ORM框架来让您的生活更轻松。

案例2 ,在SQL数据库中执行此操作会导致许多问题。您最终会编写大量不必要的代码来尝试检测类型,确保您正在进行正确的连接。这将是一场噩梦!我真的想不出这样做的任何好处。

您可以拥有案例3 的No-SQL数据存储区。像MongoDB或RavenDB。没有结构可以担心。你输入的是你得到的东西,没有任何翻译。 (至少使用RavenDB)。 No-SQLData商店对于大规模应用程序来说要快得多,但它们确实需要一段时间才能正确使用它们。

我建议您选择案例1