如何在数据库中存储大小不一的关系?

时间:2017-11-01 18:24:04

标签: mysql database database-design sqlalchemy

首先,我作为对数据库相对缺乏经验的人来找你,所以如果我犯了任何错误,我会道歉。

在我目前的数据库中,存储了两种东西:人(以及有关这些人的信息)以及他们喜欢的报纸。我的主表看起来像这样:

enter image description here

这很好用,但是现在随着我的应用程序的增长,我现在开始找到喜欢超过1份报纸的人!我的(可能是无知的)解决方案是创建一个名为multiple_favourite的新专栏 - 这可能会有一个' yes'或者“不是”在它。

如果它包含“没有”,这意味着该人只有一张最喜欢的报纸,而且它在“好评报纸”旁边列在了它旁边。柱。然而它有一个“是”'在它,然后它意味着这个人喜欢超过1报纸。

我的应用程序将导航到另一个表,看起来像这样:

enter image description here

现在,只要我的应用程序遇到了一个有“是”的人。在' multiple_favite'在行中,它将导航到此表,找到相关的用户ID,并提取列表。这是一个很好的解决方案,只要它有效,但每次想要找到一些数据时必须解压缩列表感觉非常糟糕。

此外,它还可以过滤“multiple_newspapers”的结果。桌几乎不可能。例如,假设您想要找出喜欢洋葱的每个人的名字。和每日邮件'。在此设置中执行此操作的唯一方法是遍历表的每一行,解压缩列表,并检查这两个项是否存在。

这适用于小型数据库,但是当谈到可扩展性时,这肯定会失败。

因此,我的问题是,如何解决这个问题?感觉就像我必须有一个明显的解决方案,但是对于我的生活,我似乎无法找到它。

非常感谢任何帮助!

感谢。

1 个答案:

答案 0 :(得分:2)

将其标准化,为报纸设置一个表格,并在两者之间建立多对多的关系。