首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关系数据库设计(MySQL)

关系数据库设计(MySQL)
EN

Stack Overflow用户
提问于 2010-12-02 13:46:59
回答 4查看 588关注 0票数 1

我现在正在为一个基于“人才”的应用程序设计数据库,例如:

  • Models
  • Actors
  • Singers
  • Dancers
  • Musicians

我昨天开始了一个类似的问题,并在回答中取得了一些进展,但我认为现在开始一个新的问题会更容易一些。所以这就是我目前所拥有的:

代码语言:javascript
复制
Table talent:

- id
- name

Table subtalent:

- id
- name
- talent_id (FK)

Table user:

- id
- name

任何在网站上注册的用户都可以为这些天赋中的一个或多个创建一个配置文件。一个天才可以有次天赋,例如,一个演员可以是一个电视演员,一个戏剧演员或一个配音演员。

现在我需要知道以下几个问题的答案:

1)如何存储用户所拥有的人才和子人才。我想还需要两个表(talent_user和subtalent_user)?

2)用户可以指定每个顶级人才的具体信息。每个天赋的字段都会不同,所以我假设这需要另一组表?如何将这些链接到用户记录,即外键是什么?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-12-02 13:56:45

1)我同意。

代码语言:javascript
复制
Table talent_user:
- id
- user_id
- talent_id


Table subtalent_user:
- id
- user_id
- subtalent_id

2)我认为答案取决于几个因素。如果你确切地知道不同天赋的不同形式是什么,我会保持简单(如“不要想太多”),并为每一种不同的形式创建一个表格。否则,您可能希望所有表单只有一个表,并将表单数据保存为XML。这样,您就可以保留原始表单的结构,而不需要太复杂的数据库架构。

票数 1
EN

Stack Overflow用户

发布于 2010-12-02 13:55:17

你会不会需要一个子天赋的子天赋?即。在某些情况下,你有很多不同层次的天赋,父母天赋有子天赋,但父母是另一个天赋的子天赋。哇,那是文字!:)

在这种情况下,您将使用自引用表。就像下面

代码语言:javascript
复制
Table:Talents

 - TalentID
 - ParentTalentID (References TalentID column, NULL if this Talent is a top level)
 - Name

然后,您可以拥有任意多的类别,子类别,随您喜欢。

然后,您将需要一个连接表,因为一个用户可以拥有许多人才,而一个人才可以属于许多用户。

代码语言:javascript
复制
Table:UserTalents

 - TalentID (Fk)
 - UserID (Fk)

Table:Users

 - UserID (Pk)
 - Name
票数 2
EN

Stack Overflow用户

发布于 2010-12-02 13:51:26

  • 放弃了子天赋。人才是一个层次型人才- (ParentTalent字段)。允许任意深度。
  • 您需要一个UserTalent表将用户链接到天赋表中的条目。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4335668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档