【发布时间】:2018-04-14 03:41:12
【问题描述】:
首先,我作为一个对数据库相对缺乏经验的人来找你,所以对于我犯的任何错误,我深表歉意。
在我当前的数据库中,存储了 2 种事物:人(以及有关这些人的信息)和他们喜欢的报纸。我的主表看起来像这样:
这很好用,但是现在随着我的应用程序的增长,我现在开始找到喜欢超过 1 份报纸的人!我的(大概是无知的)解决方案是创建新列 - 称为 multiple_favourite - 这将包含“是”或“否”。
如果它包含“否”,这意味着该人只有 1 份最喜欢的报纸,并且在“最喜欢的报纸”列中紧挨着它列出。然而,它有一个“是”,那么它意味着这个人喜欢不止一份报纸。
然后,我的应用程序将导航到另一个表格,如下所示:
现在,每当我的应用程序遇到在“multiple_favourite”行中有“yes”的人时,它就会导航到该表,找到相关的用户 ID,然后提取该列表。就其工作而言,这是一个很好的解决方案,但是每次您想查找一些数据时都必须解压缩列表,这感觉是一种非常糟糕的做法。
此外,它使“multiple_newspapers”表的过滤结果几乎不可能。例如,假设您想找出同时喜欢“洋葱”和“每日邮报”的每个人的姓名。在此设置中执行此操作的唯一方法是遍历表的每一行,解压缩列表,然后检查这两项是否存在。
这适用于小型数据库,但是在可扩展性方面肯定会失败。
因此,我的问题是,我该如何解决这个问题?感觉必须有一个明显的解决方案,我正在浏览,但对于我的生活,我似乎找不到它。
非常感谢任何帮助!
谢谢。
【问题讨论】:
标签: mysql database database-design sqlalchemy