在哪里保存用户数据?

Jes*_*uez 2 database-design

我希望这是正确的 stackexchange 地点。

我真的是使用数据库的新手,我有一个小问题:在哪里保存用户数据?我的意思是,如果我在我的应用程序上登录为“Foxandxss”,并且我想要我的...问题列表...它如何知道我的问题?

我以数据表中的“所有者”列结束。我过滤了将 ​​Owner 与当前登录的用户进行比较的行。对于一张桌子来说可能还可以,但如果我有 5 张桌子,那就有点矫枉过正了。

那么,典型的数据库是如何管理用户数据的呢?

谢谢你。

Aar*_*and 7

您需要描述其他 5 个表。数据是如何关联的?如果数据已经自然相关,您应该只需要过滤一次所有者。例如,如果我想要我的所有问题及其相关答案,我应该能够做这样的事情(请忽略语法,我不知道您使用的是什么平台):

SELECT Q.QuestionID, Q.Text, ..., A.AnswerID, a.Text, ... 
  FROM Questions AS Q
  INNER JOIN Answers AS A
  ON Q.QuestionID = A.QuestionID
  WHERE Q.Owner = 'Foxandxss';
Run Code Online (Sandbox Code Playgroud)

重点:您应该只需要为所有者在一个地方办理登机手续。如果您也将所有者存储在 Answers 表中,并且对于任何给定的 QuestionID 值相同,这将是浪费且适得其反。

(您实际上可能不会每次都重复问题数据,因为可能有 500 个答案,并且理想情况下您会将用户名映射到某种用户 ID,这样您就不会在整个索引和数据中重复这些广泛的数据。但希望你能理解。)

  • 所以在你的设计中,我可以有一个叫做“棒球”的类别,你可以有一个不同的类别也叫做“棒球”?如果是这样,您应该考虑将类别存储为一个全局列表,然后是一个关系表来显示我喜欢哪些类别。这样,如果你有很多喜欢棒球的用户,你只存储一次“棒球”。似乎微不足道,但随着类别名称变得更长...... (2认同)