我现在正在为一个基于“人才”的应用程序设计数据库,例如:
我昨天开始了一个类似的问题,并在回答中取得了一些进展,但我认为现在开始一个新的问题会更容易一些。所以这就是我目前所拥有的:
Table talent:
- id
- name
Table subtalent:
- id
- name
- talent_id (FK)
Table user:
- id
- name任何在网站上注册的用户都可以为这些天赋中的一个或多个创建一个配置文件。一个天才可以有次天赋,例如,一个演员可以是一个电视演员,一个戏剧演员或一个配音演员。
现在我需要知道以下几个问题的答案:
1)如何存储用户所拥有的人才和子人才。我想还需要两个表(talent_user和subtalent_user)?
2)用户可以指定每个顶级人才的具体信息。每个天赋的字段都会不同,所以我假设这需要另一组表?如何将这些链接到用户记录,即外键是什么?
发布于 2010-12-02 13:56:45
1)我同意。
Table talent_user:
- id
- user_id
- talent_id
Table subtalent_user:
- id
- user_id
- subtalent_id2)我认为答案取决于几个因素。如果你确切地知道不同天赋的不同形式是什么,我会保持简单(如“不要想太多”),并为每一种不同的形式创建一个表格。否则,您可能希望所有表单只有一个表,并将表单数据保存为XML。这样,您就可以保留原始表单的结构,而不需要太复杂的数据库架构。
发布于 2010-12-02 13:55:17
你会不会需要一个子天赋的子天赋?即。在某些情况下,你有很多不同层次的天赋,父母天赋有子天赋,但父母是另一个天赋的子天赋。哇,那是文字!:)
在这种情况下,您将使用自引用表。就像下面
Table:Talents
- TalentID
- ParentTalentID (References TalentID column, NULL if this Talent is a top level)
- Name然后,您可以拥有任意多的类别,子类别,随您喜欢。
然后,您将需要一个连接表,因为一个用户可以拥有许多人才,而一个人才可以属于许多用户。
Table:UserTalents
- TalentID (Fk)
- UserID (Fk)
Table:Users
- UserID (Pk)
- Name发布于 2010-12-02 13:51:26
。
https://stackoverflow.com/questions/4335668
复制相似问题