首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >附属系统的数据库设计

附属系统的数据库设计
EN

Stack Overflow用户
提问于 2010-07-30 07:34:57
回答 2查看 2.4K关注 0票数 0

我正在建立一个附属系统,我已经与数据库的设计在一个部分。我不知道如何追踪那个招募谁的人。让我们说我们有这样的东西:

  • 乔恩史密斯
    • 亚历克斯·德尔
      • 吉姆·韦斯特
      • 马可波罗
      • 约翰尼·布拉沃

代码语言:javascript
复制
- Pit Sampras  
    - Sara Mat 
    - Gabriella white 
    - Antonio Santo 

代码语言:javascript
复制
- Maja Grozdanova  
    - Agon Xheladini 

这一切都是这样的:1.乔恩招募了亚历克斯,亚历克斯招募了吉姆,马科和约翰尼。2.乔恩招募了比特,比特招募了萨拉、加布里埃拉和安东尼奥。3.乔恩招募了Maja,Maja招募了Agon。Agon可以招募一些ells,而那个人可以招募到ells,这是无限深的。

有没有人知道如何解决这个问题。如何设计桌子?

EN

回答 2

Stack Overflow用户

发布于 2010-07-30 07:42:22

  • 与你打交道的“实体”的一个表(人员、企业)
  • 一个确定关系的表"EntityRelation“

所以,亚历克斯·戴尔( Alex )与JonSmith有关系,他雇佣了他。这是一个相当标准的CRM方法。

票数 1
EN

Stack Overflow用户

发布于 2010-07-30 07:47:53

创建两列:

  • int userId:主键和AUTO_INCREMENT (如果数据库支持它)。每个用户将被分配一个唯一的号码。
  • int referrer:这是引用当前用户的人的userId。如果用户不是任何其他用户的附属成员,则可以将其设置为0或NULL。

树形图可以很容易地用几行代码制作。

编辑:既然您问了,下面是树形图的一些代码。我选择PHP是因为MySQL查询很容易实现,但是这个概念可以很容易地用Java、C、Ruby等实现。

代码语言:javascript
复制
function listUsers($handler, $id, $prefix) {

    // Please use MySQLi extension with prepared statements or your code
    // becomes SQL injection paradise
    $results = mysql_query("SELECT `user`, `referrer` FROM `users` WHERE `referrer` = $id");

    while ($row = mysql_fetch_row($results) {
        echo $prefix . $row[0];
        listUsers($handler, $$row[1], $prefix . "* ");
    }
}


$handler = mysql_connect(. . .);
listUsers($handler, 0, "")

我80%肯定,如果实现正确的话,逻辑会正常工作。它应返回:

代码语言:javascript
复制
/*
Jon smith
* Alex Del
* * Jim West
* * Marko Polo
* * Johny Bravo
* Pit Sampras
* * Sara Mat
* * Gabriella white
* * Antonio Santo
* Maja Grozdanova
* * Agon Xheladini
*/
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3369493

复制
相关文章

相似问题

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