数据库引用表中的列?

时间:2015-04-27 10:37:31

标签: mysql

我确信我要做的是基本练习,但我无法找到解决方案。我搜索了外键,但我认为这不是我需要的。

我想要的行为:我有一个应用程序,其中有一个"位置"标签和"联系人"标签。此数据将从数据库中提取。信息将以cms填写。用户可以为联系人选择两件事:从位置选择现有联系人(提取名称+邮件)或创建新联系人。在我的文件中,然后我从联系人表中提取数据,只显示选择元素中的行。(参见下面的简短示例)。

所以在我的联系表中我需要有两件事:从我的位置表引用名称+邮件或新记录(自定义邮件+名称)

我有两张桌子:

+-------------------+
| LOCATION          |
+-------------------+
| primary           |
| name              |
| zip               |
| mail              |
| ...               |
+-------------------+

+-------------------+
| CONTACT           |
+-------------------+
| primary           |
| (lid)             |
| name              |
| mail              |
+-------------------+

位置和联系之间的关系是一对一/无关系。因此,可能存在没有联系的位置。

联系人可以是两件事:对位置的引用(然后从那里提取名称+邮件),这样当用户更新位置时,联系人将自动更新,或创建"自定义&# 34;联系。

前:

用户创建位置:name" Test" mail" test@mail.com"

用户选择"测试"用于创建新联系人:拉动"测试"和" test@mail.com"作为来自位置表的名称和邮件(当位置更新时也更新它)

用户创建联系人:name" Custom" mail" custom@mail.com"

然后我有一个联系表单,它从联系表中提取数据,然后显示:

<select>
    <option>Test</option>
    <option>Custom</option>
</select>

我怎样才能做到这一点?我知道解决方案,如果我只需要其中一个例子。例如,创建一个用户可以插入自定义数据的表格很容易。但是我如何结合一个&#34; custom&#34;和#34;关系&#34;功能?

提前致谢!

1 个答案:

答案 0 :(得分:1)

您是否考虑对数据库进行规范化,以便将联系人存储在联系人表中,并对位置表中保存的联系人记录进行引用。

+-------------------+
| LOCATION          |
+-------------------+
| id                |
| contact_id        |
| zip               |
| ...               |
+-------------------+

+-------------------+
| CONTACT           |
+-------------------+
| id                |
| name              |
| mail              |
+-------------------+

修改位置时,如果用户选择现有联系人,则可以将该ID存储在contact_id中。如果他们要添加新的联系人,请先让应用程序保存新联系人,然后使用这个新创建的联系人ID