我在用这些值设置数据库表时遇到了问题。所有的东西都摆在合适的桌子上,因为如果没有,谁能帮我把正确的东西拿给我看吗?我只是需要澄清一下。谢谢!

检查了所有的答案,它们都很有用,但我只能选择一个!
发布于 2014-12-16 19:39:31
第一个想法是,用后缀Tbl标记每个表是多余的。我们知道这是一张桌子,不会有任何混淆。例如,将其命名为users和purchases就足够了。对于这些表的主键也可以这样说。例如,您不需要调用相册表AlbumID的主键id列,因为它永远不能在表所属的表的上下文之外引用。您可以简单地将其命名为id。
有些表中有一些不属于的额外列。我看到的模式可能表明你并没有完全建立在人际关系的基础上。我将指出几个地方有一个混淆,这应该给你一个坚实的基础,以审查其余的表,并找到其他错误。
查看UserTbl表,您将获得购买的id (Purcahse_ID)。在现实世界中,这意味着每个用户只能有一个购买,这是不可能的情况。更有可能的是,用户可能会购买许多。正如一位教授曾经告诉我的那样,当决定把外键放在哪里时,钥匙总是放在关系的“许多”方面。因此,在本例中,您将希望从Purchase_ID中删除UserTbl,并在PurchaseTbl中添加一个User_ID。这样,用户可能确实有许多购买,每一次购买都包含购买的用户的id。
在ArtistTbl和GenreTbl中也有类似的问题。看看你能不能确定这种关系应该是什么样的。希望这更有意义。
请注意:除非您的系统是用来跟踪奴隶劳动的,否则我认为PurchaseTbl中的PurchaseTbl实际上应该是AlbumID,因为用户最有可能购买的是专辑,而不是个人。
发布于 2014-12-16 19:39:26
你的外键看上去好像是在错误的桌子上。
通常,正确的方法是考虑一个表中有多少个记录需要引用另一个表中的记录。如果艺术家发布了10张专辑,则不能将所有10个专辑If放入艺术家表中的一个记录中。对于这些ids,您需要10列,这是没有意义的。相反,您想要跟踪哪个艺术家在专辑表中记录了该专辑。对于相册表中的艺术家id,它只需要一个额外的列。
发布于 2014-12-16 19:46:38
首先,您不需要表上的tbl后缀。它们在你的数据库里,我们知道它们是表,省得你自己打字。第二,你指的是正常化。有不同层次的正常化,我认为有些太过分了。基本上,你想把你的用户和他们的购买联系起来。他们的购买将链接到专辑,其中有一个流派和艺术家。如果您的关系可以通过许多不同的in连接起来,那么最好将think链接到中间表中。你的桌子正朝着正确的方向前进,虽然并不是所有的都在那里。看看这个ERD,看看它对你是否有意义。将此图像与其他用户的上述建议相结合,您将得到解决。:)

https://stackoverflow.com/questions/27512424
复制相似问题