gpt4 book ai didi

sql-server - 友情网站数据库设计

转载 作者:搜寻专家 更新时间:2023-10-30 21:58:49 25 4
gpt4 key购买 nike

我正在尝试为我正在构建的友谊网站创建一个数据库。我想存储有关用户的多个属性,例如性别、教育程度、宠物等。

解决方案 #1 - User 表:

id | age | birth day | City     | Gender | Education  | fav Pet | fav hobbie. . .
--------------------------------------------------------------------------
0 | 38 | 1985 | New York | Female | University | Dog | Ping Pong

我遇到的问题是属性列表不断增加,现在我的用户表有 20 多列。

我觉得我可以通过为每个属性创建另一个表来规范化这一点,如下所示。然而,这会创建很多连接,我仍然在用户表中留下很多列。

解决方案 #2 - User 表:

id | age | birth day | City     | Gender | Education | fav Pet | fav hobbies
--------------------------------------------------------------------------
0 | 38 | 1985 | New York | 0 | 0 | 0 | 0

宠物表:

id | Pet Type
---------------
0 | Dog

任何人都知道如何解决这个问题,感觉两个答案都是错误的。该数据库的正确表设计是什么?

最佳答案

这比看起来要复杂得多:首先 - 如果您有大量属性,其中许多属性对于任何特定行都可能为空,并且属性选择非常动态(即会出现新属性在代码的生命周期中非常频繁),您可能想问问自己,RDBMS 是否是实现这一点的最佳方式......本质上是非架构。也许文档存储会更合适?

如果您确实想留在 RDBMS 世界,规范的答案是拥有一个或每个数据类型一个属性表加上一个属性表:

Users.id | .name | .birthdate | .Gender | .someotherfixedattribute
----------------------------------------------------------
1743 | Me. | 01/01/1970 | M | indeed


Propertytpes.id | .name
------------------------
234 | pet
235 | hobby

Poperties.uid | .pid | .content
-----------------------------
1743 | 234 | Husky dog

关于sql-server - 友情网站数据库设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27159535/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com