0

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

用户:名字、姓氏、电子邮件、手机、关于/描述、类型(员工/自由职业者/客户)

员工:类型(设计师/FE 开发人员/BE 开发人员/DB 开发人员/SE 乐观主义者)、员工等级
(经理/员工/员工)、从事的项目、正在从事的活动项目、地址、技能(HTML/CSS/JS/ASPX /PHP/DB 开发/SEO/设计)、软件(Photoshop/Illustrator/In-Design/Fireworks/VisualStudio/MSQL/Wordpress)

自由职业者:类型(设计师/FE 开发人员/BE 开发人员/DB 开发人员/SE 乐观主义者),从事的项目,正在从事的活动项目,地址,技能(HTML/CSS/JS/ASPX/PHP/DB 开发/SEO/设计),软件(Photoshop/Illustrator/InDesign/Fireworks/VisualStudio/MSQL/Wordpress)

客户:拥有的项目、拥有的活动项目、地址(家庭/工作/发票/交付)

地址 :门牌号:, 街道地址, 2 号线, 3 号线, 县, 国家, 邮编, 座机

项目:标题、客户名称、开始日期、结束日期、截止日期、状态(活动、保留、非活动)、关于、开发团队(从事项目工作的自由职业者或员工的列表)、进度(由里程碑完成:设计/FE /BE/DB/BO/SEO/部署)

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

任何帮助?我真的卡住了。提前致谢。

4

2 回答 2

2

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

听起来您需要一个 Person 表,其中有一行描述系统中每个唯一的人。

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

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

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

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

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

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

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

于 2012-12-31T15:05:14.580 回答
0

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

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

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

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

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

于 2012-12-31T14:59:01.243 回答