我正在尝试构建一个家庭图书馆管理客户端/服务器应用程序,具有以下功能:
我很关心数据库组织的设计,因为这是我第一个需要超过两三个关系表的“大”项目。我已阅读this,this和this,但很难谷歌这样一个开放的问题,我不确定我在可能的文档来源中寻找的功能。
我的问题如下:根据以下哪种(或其他)数据库方案是最佳的:安全性,速度和维护的顺序。
每个用户信息:每个应用用户都有一个等效的数据库用户和包含图书,作者,流派,联系人和贷款的表格。即使规模小,也很容易实现和保护,恕我直言这似乎是一种非常低效的方式,主要是出于缩放的原因:首先,这意味着如果两个用户拥有相同的书,我将存储重复的书籍,是一种浪费,如果我有大量的用户而不是我预期的管理地狱(见this问题)
一个用户来统治它们:后端可以使用一个“myapp”用户与数据库通信。这意味着只有一张桌子可供所有书籍,用户,作者等使用......但我看到以下问题:如果整个世界都使用该应用程序,这将会很好用 - 但我的用户主要是借书给外部人士(目标是有一个移动应用程序,允许选择联系人作为借款人)。我想知道如何存储通常需要完整表格的每用户信息,例如所拥有的书籍和元数据(分数,读取时间,日期......),或者联系人列表目前借出/借用。
我从来没有真正做过任何严肃的网络服务开发,因为我这样做是为了好玩,我不知道“通常”是怎么做的。 欢迎提出任何建议,想法,见解和澄清要求!
编辑:Here是我想要存储的数据的ER图。另外,在评论中阅读了MSDN文章(实际上整个系列很有意思)我想我现在想要选择:
我还认为对我的目标公众更精确一点可能是一个好主意:我想创建一个小型开源服务器,可以支持少量(<100)人。客户端将能够配置他们想要连接的服务器,因此任何人都可以自己托管;如果可能的话,进行水平扩展的能力是一个目标,但我不希望有足够的用户扼杀单个数据库实例。
PS:附带问题:如果他没有留下任何书籍,我应该从联系人表格中删除联系人,尽可能少地将信息保存在除我的用户之外的其他人身上 - 或者我是否应该使用特权并留住他们? (毕竟有些社交网络公司不会给出该死的......)