如何规范PostgreSQL数据库中的表

时间:2019-02-10 21:24:39

标签: python django postgresql

我正在构建一个社交网络平台,用户可以在该平台上注册自己的个人资料,填写个人资料并为其他人创建活动。我的问题是我不知道创建表的最佳方法是什么。

一个人告诉我我应该 normalize 表,这意味着-他要我为citycountryuniversity,{{1 }},然后将这些信息与SQL查询相关联,这对我来说很有意义。如果我要让100名学生从同一所大学注册,那么对我来说,从大学表中仅调用一个大学名称而不用填写带有大学名称的行是有意义的-这是数据冗余。

但是,另一个人告诉我,这是一种不好的做法,我应该将所有信息放在一个company表中-userfirstNamelastName,{ {1}},profileIMGuniversityNameCompanyName等。他说,更多表会产生更多问题

就我而言,我确实了解第一个人的逻辑,但这是我的另一个问题。如前所述,用户在个人资料中填写了cityName,并且希望他们最多可以添加3所他们就读过的大学-学士学位,硕士学位和博士后。我也希望允许他们与公司合作-他们最多可以为之前工作的三个公司加起来。

我想我将创建大学表,其中将包含以下内容:CountryNameresumeuniversityName_1。我想对universityName_2表做同样的事情。

这是一个好习惯吗?

也许,我只应该创建一个带有universityName_3列的company表,而从数据库中检索数据时,我只是在Django项目中使用SQL查询来调用特定的大学具体位置?就像我称哥伦比亚大学(Columbia University)为第二名(universityName_2)吗?

我是这个主题的新手!希望我清楚地向您介绍了我的问题!

1 个答案:

答案 0 :(得分:0)

“第二个人”可能不太了解关系数据库。

如果personuniversitycompany有关系,则添加具有外键的表person_universityperson和{{1 },并包含关系的详细信息。该表的主键将是一个组合键,由两个外键组成。公司也一样。

这是将此类关系存储在数据库中的规范方法。您无法以这种方式建模的上限是三个,但是可以由您的应用程序处理。