SQL多用户类型数据库

时间:2012-12-31 14:51:42

标签: asp.net mysql database

我需要一个数据库来存储以下信息:

用户: FirstName,LastName,电子邮件,移动设备,关于/说明,类型(员工/自由职业者/客户)

员工:类型(设计师/ FE开发人员/ BE开发人员/ DB开发人员/ SE乐观主义者),员工级别         (经理/员工/员工),项目工作,活动项目工作,地址,         技能(HTML / CSS / JS / ASPX / PHP / DB开发/ SEO /设计),         软件(软件/插图/在设计/烟火/ VisualStudio的/ MSQL / WordPress的)

自由职业者:类型(Designer / FE开发人员/ BE开发人员/数据库开发人员/ SE乐观主义者),项目工作,Active Projects工作,地址,技能(HTML / CSS / JS / ASPX / PHP / DB开发/ SEO /设计),软件(Photoshop / Illustrator / InDesign / Fireworks / VisualStudio / MSQL / Wordpress)

客户:拥有的项目,拥有的有效项目,地址(主页/工作/发票/交付)

地址:房屋号码:街道地址,2号线,3号线,县,国家,邮政编码,固定电话

项目:标题,客户名称,开始日期,结束日期,截止日期,状态(有效,待命,非活动),关于,开发团队(自由职业者或项目工作人员名单) ,进展(由里程碑完成:设计/ FE / BE / DB / BO / SEO /部署)

基本上我正在努力的是如何链接不同类型的地址和用户等。例如,用户可以是:员工或自由职业者或客户,或者员工或自由职业者也可以是客户。我不知道这将如何在数据库格式中工作。地址类型等也是如此。

任何帮助?我真的被困了。提前致谢。

2 个答案:

答案 0 :(得分:2)

您在询问RDBMS设计的基础知识。它有时被称为实体 - 关系设计。这是一个很大的话题。你可能想读一本书。

听起来你需要一个Person表,其中一行描述了系统中的每个独特人物。

然后,您可能需要一个组织表,其中包含描述每个组织的行(公司,咨询公司,自由实体,客户,提供商等)。

Person_Organization表可以将人员与组织联系起来。这将实现Person和Organization之间的多对多实体关系。此表可以包含PersonID,OrganizationID以及描述该人员在该组织中的角色的字段。

您可以添加联系人表格,其中包含联系信息(地址,电话号码,电子邮件等)。它将在每一行中包含一个Person id。

你有一个Project表,每个项目都有一行。这将包含一个OrganizationID,用于标识单个客户,以及描述项目的其他材料。

还有一个角色表,每个组织在每个项目中都扮演一个角色。

如何处理具有多个联系地址的组织是一项留给您的练习。

请记住,在这种工作中“太聪明愚蠢”。

答案 1 :(得分:0)

您使用外键的概念完成所有这些操作。

通常,一个好主意是为每个表提供一个主键列,该列将用作每行数据的标识符。用户表将具有UserId,Project表将具有ProjectId等。

从那里,您可以向其他表中的列添加外键约束,以强制这些行映射到User。例如,您的Address表将有一个名为UserId的列,它是User表的外键;此键告诉您该行的地址属于相应的用户。

如何构建外键约束取决于您的要求和数据之间的关系;这是你应该弄清楚的东西,这样你就可以使用简单的查询访问所有必要的信息。

另外,请记住您的数据是分层的。您有一个客户,自由职业者和员工,每个人都需要一个地址。但所有这三个也是用户。将每个表键入User表更有意义,然后将Address表键入User表。这样可以使您的关系更灵活,更易于理解。